POSIX sigevent不使用c11编译

问题描述 投票:3回答:2

我在C中有一个使用POSIX struct sigevent的简单应用程序。

#include <signal.h>

int main(int argc, char *argv[])
{
    struct sigevent sig_event;

    return 0;
}

当我这样编译时:

gcc test.c

很好。当我强制使用C11模式时,它将失败:

gcc test.c --std=c11

test.c: In function ‘main’:
test.c:5:21: error: storage size of ‘sig_event’ isn’t known
    struct sigevent sig_event;

我正在Ubuntu 15.10上使用gcc 5.2.1。有什么想法导致这些错误吗?当我尝试从timer_create()函数的手册中编译示例时,首先出现了此问题。情况相同,只是错误更多。

c gcc posix c11
2个回答
4
投票
gcc test.c

之所以起作用,是因为默认情况下gcc启用了POSIX功能的某些级别和许多GNU扩展。

编译为:

gcc -std=c11 -D_POSIX_C_SOURCE=200809 file.c


0
投票

gcc -std=c11 -D_XOPEN_SOURCE=700 file.c

    gcc -std=c11 _GNU_SOURCE file.c
  • gcc -std=gnu11 file.c
  • 这里700表示X Open7 Posix 2008。
  • © www.soinside.com 2019 - 2024. All rights reserved.