我正在使用函数'strdup'将char*插入char**并获取search.c:174:13: warning: assignment makes pointer from integer without a cast [enabled by default]警告.
char** temp;
...
temp = NULL;
...
temp[0] = strdup(tokens[i]);
Run Code Online (Sandbox Code Playgroud)
哪里tokens[i]只是strtok()函数的一个字符串.
我不认为这是相关的,但我有这样的警告,以及...
search.c:174:5: warning: implicit declaration of function ‘strdup’ [-Wimplicit-function-declaration]这是唯一的显示,因为我有-ansi标志和我检查了函数的工作,我只是讨厌看到警告.
如果这个问题得到解答,我也很抱歉; 有很多问题类似于这一个,但没有一个帮助我,因为我可以告诉我的类型是匹配的.(显然不是因为我收到了警告)
我不认为这是相关的,但我也有这个警告... search.c:174:5:警告:隐式声明函数'strdup'[-Wimplicit-function-declaration]
它是相关的,两者都有相同的原因.您没有strdup范围内的原型,因此假定返回类型为int(在C89/C90中;隐式声明已在C99中删除,但默认情况下仍被广泛接受).
您需要#include <string.h>并启用一个strdup可以定义的特征测试宏,例如_XOPEN_SOURCE >= 500或_BSD_SOURCE(甚至可能只在没有的情况下才能工作-ansi).
GCC的-ansi标志设置旧ISO C90标准的兼容模式.strdup没有在该标准中定义; 这是一个POSIX功能.要么摆脱-ansi标志,要么严格编译符合C90的代码,要么遵守标准,不要使用POSIX API.