文章目录

  • ​​1.首先可以测试OS是否有stddef.h头文件?​​
  • ​​2.查看gcc编译器默认支持的c语言标准​​

1.首先可以测试OS是否有stddef.h头文件?

  • 单独编译头文件
gcc -E - <<<'#include<stddef.h>' | grep stddef.h
或者
gcc -E - <<<"#include<stddef.h>" | grep stddef.h
  • 通常情况下C库的头文件在/usr/lib/中,在ubuntu15.04上/usr/include/linux/stddef.h是空的,在Centos上,是有内容的,内容如下:
#ifndef _LINUX_STDDEF_H
#define _LINUX_STDDEF_H

#undef NULL
#if defined(__cplusplus)
#define NULL 0
#else
#define NULL ((void *)0)
#endif

#endif
  • 要么就是Makefile文件导致的
    删除Makefile文件中的nostdinc选项
  • 结论:一般不用去关系这个问题,肯定是其它报错引起的

2.查看gcc编译器默认支持的c语言标准

gcc -E -dM - </dev/null | grep "STDC_VERSION"



查看 __STDC_VERSION__的值

如果没查到,则默认是c89的标准;

如果是#define __STDC_VERSION__ 199901L,则默认支持的是c99标准;

如果是#define __STDC_VERSION__ 201112L,则默认支持的c11标准;