包含stddef.h但max_align_t未声明

时间:2015-10-14 20:05:44

标签: 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;
}

但是编译器说:

error: ‘max_align_t’ undeclared".

stddef.h已包含在内,一切都必须正常,不是吗?

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

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:-1)

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