为什么/usr/include/linux/stddef.h是空的?
转载
文章目录
- 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标准;