diff --git a/include/asterisk/app.h b/include/asterisk/app.h
index 6323287fccc7db32f896aaa4c966d3b439d238c2..7690364f6d80c78603e6c74e1ba6b40534a487ac 100644
--- a/include/asterisk/app.h
+++ b/include/asterisk/app.h
@@ -1215,7 +1215,7 @@ int ast_app_group_list_unlock(void);
   ast_app_separate_args() will perform that function before parsing
   the arguments.
  */
-#define AST_DECLARE_APP_ARGS(name, arglist) AST_DEFINE_APP_ARGS_TYPE(, arglist) name = { 0, }
+#define AST_DECLARE_APP_ARGS(name, arglist) AST_DEFINE_APP_ARGS_TYPE(argtype_##name, arglist) name = { 0, }
 
 /*!
   \brief Define a structure type to hold an application's arguments.
@@ -1233,10 +1233,13 @@ int ast_app_group_list_unlock(void);
  */
 
 #define AST_DEFINE_APP_ARGS_TYPE(type, arglist) \
+	struct __subtype_##type { arglist }; \
 	struct type { \
 		unsigned int argc; \
-		char *argv[0]; \
-		arglist; \
+		union { \
+			char *argv[sizeof(struct __subtype_##type) / sizeof(char*)]; \
+			struct { arglist }; \
+		}; \
 	}
 
 /*!