stddef.h 已包含但未声明 [​​=11=]

stddef.h is included but max_align_t is undeclared

我想编译这段代码:

#include <stdalign.h>
#include <stdio.h>
#include <stddef.h>
int main ( int argc , char ** argv )
{
    printf ("%zu\n", alignof ( max_align_t ));
    return 0;
}

但是编译器说:

error: ‘max_align_t’ undeclared".

stddef.h都包含了,应该没问题吧?

P.S。我已经尝试在 gcc4.8 和 gcc4.9 下编译这段代码,但出现了所描述的错误。

要使用 C11 功能,您需要告诉编译器 运行 在 C11 兼容模式下。

对于 gcc,这可以通过指定选项 -std=c11.

来实现

我使用的编译器本身基于 c99,它使用 stddef.h。在我的计算机上,我需要使用 -std=c11 选项以及一个显然对应于 c11.

的头文件