【发布时间】:2015-02-28 15:42:37
【问题描述】:
这是我的编译警告:
src/Debugger.c:219:52: warning: passing argument 2 of ‘Debugger_Command[i].Callback’ from incompatible pointer type
Debugger_Command[i].Callback(argc, argv);
^
src/Debugger.c:219:52: note: expected ‘const char **’ but argument is of type ‘char **’
以下是相关源码:
/* Definition */
typedef void (*Debugger_Callback_t)(int argc, char const * argv[]);
typedef struct tagDebugger_Command_t {
/* ... */
Debugger_Callback_t Callback; /**< Callback */
} Debugger_Command_t;
Debugger_Command_t const Debugger_Command[] = { /* ... */ }
/* Use of the callback where the warning occurred */
char *argv[DEBUGGER_ARG_COUNT];
Debugger_Command[i].Callback(argc, argv);
将非 const 变量作为 const 参数传递有什么问题? 据我了解,这是为了确保不会在函数内部修改字符串。那么为什么会出现警告呢?
编译器:Windows/Cygwin 上的 gcc 版本 4.9.2 (GCC)
【问题讨论】:
标签: c gcc-warning