我目前正在收到此编译时警告:
warning: assignment makes pointer from integer without a cast
以下代码行:
char* msg = my_vect2str(argv[3]);
请注意,我的my_vect2str
函数的返回类型为char*
,如声明中所示:
char* my_vect2str(char** x);
显然,根据通用标准,argv
定义为char** argv
。
我不太清楚为什么会出现这个问题。
答案 0 :(得分:2)
警告:赋值使用整数而不使用强制转换
最有可能的是,在调用 之前没有给原型调用my_vect2str()
。因为编译器不知道my_vect2str()
返回什么,它会假定int
,但上面的错误消息。
答案 1 :(得分:1)
我认为你希望你的矢量是这样的:
char* my_vect2str(char* x);
您的退货类型没问题,但在您的通话中,argv[3]
将返回取消引用的值。 char**
暗示“指针数组”,从你调用它的方式来看是没有意义的。
答案 2 :(得分:0)
my_vect2str
需要一个字符串数组,但您只是传递一个字符串。你可以这样做:
char *msg = my_vect2str(argv);
传递整个argv
数组。如果您只想传递argv[3]
,则可以创建另一个包含它的数组:
char *new_array[] = { argv[3], NULL };
char *msg = my_vect2str(new_array);
我假设my_vect2str
期望数组有一个NULL
终结符,因为函数不会将长度作为参数。