【问题标题】:error: expected identifier or ‘(’ before ‘__extension__’错误:在“__extension__”之前的预期标识符或“(”
【发布时间】:2011-11-05 14:05:18
【问题描述】:

尝试编译我的代码库中的一个文件时,我收到一条奇怪的编译时错误消息。

让这个错误更奇怪的是它只在我在发布模式下构建时发生 - 它在调试模式下编译没有问题。

以下是违规文件的(全部)内容:

#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;
}

我在 Ubuntu 10.0.4 上使用 gcc (Ubuntu 4.4.3-4ubuntu5) 4.4.3 进行编译

有人知道我为什么会收到这个错误吗?

【问题讨论】:

  • 我可以毫无问题地编译它。 1.这是真正完整的文件吗? 2.编译器不给你行号吗?

标签: c gcc compiler-errors


【解决方案1】:

您不能使用名称strtok_r 作为您的函数名称,因为它已经在 string.h 库中。如果你使用strtok_rrr 或其他东西,编译得很好。

【讨论】:

  • 但是你知道为什么它在调试模式下工作并且只在发布模式下中断吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多