未在c中加载标识符

未在c中加载标识符,c,linux,gcc,C,Linux,Gcc,我试图运行一个处理信号的示例,但在未找到标识符的情况下编译失败 下面是如何加载标题: #define __USE_GNU #include <ucontext.h> GCC信息: $ gcc --version gcc (Ubuntu/Linaro 4.8.1-10ubuntu9) 4.8.1 /usr/include/ucontext.h确实包括/usr/include/sys/ucontext.h,它具有: #ifdef __x86_64__ [...] #ifdef __U

我试图运行一个处理信号的示例,但在未找到标识符的情况下编译失败

下面是如何加载标题:

#define __USE_GNU
#include <ucontext.h>
GCC信息:

$ gcc --version
gcc (Ubuntu/Linaro 4.8.1-10ubuntu9) 4.8.1
/usr/include/ucontext.h确实包括/usr/include/sys/ucontext.h,它具有:

#ifdef __x86_64__
[...]
#ifdef __USE_GNU
/* Number of each register in the `gregset_t' array.  */
enum
{
  [...]
  REG_RIP,
(我的系统是64位)


所以我不明白为什么它找不到它?

试着像这样编译你的程序

gcc -D_GNU_SOURCE -o sa_siginfo sa_siginfo.c

只有在定义了
\u GNU SOURCE
的情况下,才会定义
\u USE\u GNU
,默认情况下,
gcc
不会定义它。

Nope的可能重复我已经检查过一项,即仅执行编译的预处理器步骤(通过给出正确的命令行开关)并检查输出以获取线索。向问题中添加失败的compile命令以及编译器版本可能有助于获得答案。我没有将其包括在内,因为这是相当标准的,但我只是添加了这些。我尝试过,但它似乎已经被定义为我得到:警告:“\u使用\u GNU”重新定义您应该删除源代码中的
#define u_u_GNU
gcc -D_GNU_SOURCE -o sa_siginfo sa_siginfo.c