gpt4 book ai didi

c - Glibc - ucontext.h 中的错误,但仅限于 -std=c11

转载 作者:太空宇宙 更新时间:2023-11-04 00:47:23 25 4
gpt4 key购买 nike

我有这个最小的 helloworld,扩展了 ucontext.h:

#include <ucontext.h>
#include <stdio.h>

int main(int argc, char** argv) {
printf ("hello world!\n");
return 0;
}

使用 gcc-4.9 (gcc -c hw.c -Wall) 编译时没有警告。

但是如果我切换到 c11 标准 (gcc -std=c11 -c hw.c -Wall),我会收到以下错误:

$ gcc -std=c11 -c hw.c -Wall
In file included from /usr/include/ucontext.h:26:0,
from hw.c:1:
/usr/include/x86_64-linux-gnu/sys/ucontext.h:137:5: error: unknown type name ‘stack_t’
stack_t uc_stack;
^

我的第一个想法是 glibc 不支持 c11。谷歌搜索并没有显示可用的信息。什么情况?

(我使用 glibc-2.19 和 gcc-4.9。它是一个 debian jessie,amd64。)

最佳答案

-std=c11是 C11 标准兼容模式。 <ucontext.h>严格来说不是 C11 的一部分(请参阅 Stas 的回答)。

要使用这些 header ,请使用扩展模式 -std=gnu11或根据您打算支持的平台定义适当的宏( _POSIX_C_SOURCE_BSD_SOURCE_XOPEN_SOURCE_GNU_SOURCE 或其他)。

See this page for more info关于启用功能的宏。

关于c - Glibc - ucontext.h 中的错误,但仅限于 -std=c11,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32426835/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com