尝试编译代码库中的一个文件时,我遇到一个奇怪的编译时错误消息。
这个错误更加奇怪的是它只会在我在发布模式下构建时发生 - 它在调试模式下编译没有任何问题。
以下是违规文件的(整个)内容:
#include <string.h>
char * strtok_r(char *s, const char *delim, char **save_ptr)
{
char *token;
if (s == NULL)
s = *save_ptr;
s += strspn (s, delim);
if (*s == '\0')
return NULL;
token = s;
s = strpbrk (token, delim);
if (s == NULL)
*save_ptr = strchr (token, '\0');
else
{
*s = '\0';
*save_ptr = s + 1;
}
return token;
}
我正在使用Uccntu 10.0.4上的gcc(Ubuntu 4.4.3-4ubuntu5)4.4.3进行编译
有谁知道我收到此错误的原因?
答案 0 :(得分:3)
您不能使用名称strtok_r
作为函数名,因为它已经在string.h库中。如果您使用strtok_rrr
或其他内容,则编译正常。