包含 stddef.h 但未声明 max_align_t

and*_*kau 5 c gcc c11

我想编译这段代码:

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

但是编译器说:

error: ‘max_align_t’ undeclared".
Run Code Online (Sandbox Code Playgroud)

stddef.h 包括在内,一切都必须没问题,不是吗?

PS 我已经尝试在 gcc4.8 和 gcc4.9 下编译这段代码,但是我有描述的错误。

alk*_*alk 5

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

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