如果变量声明为:
char ** argv;
函数的定义类似于:
extern int my_system(const char *argv[]);
现在,如果我们将函数中的参数传递为:
(my_system(argv))
然后它从不兼容的指针类型抛出警告传递'my_system'的参数1。
可能的解决办法是什么?
答案 0 :(得分:0)
在C中,T**
到const T**
之间没有隐式转换,因为它不会阻止在所有情况下修改最终元素。有关“后门”修改的增强说明和示例,请参阅C FAQ的问题11.10
。
在你的情况下,了解了复杂性,你可以将指针投射到无声的警告:
extern int my_system(const char *argv[]);
int main(int argc, char* argv[])
{
my_system((const char**)argv);
}