为什么usrincludelinuxstddef.h为空?

为什么usrincludelinuxstddef.h为空?,第1张

概述这个头文件应该定义NULL或者size_t等宏,但是我发现/usr/include/ linux/stddef.h是空的?为什么? 标头的实际位置是实现定义的.你看的不是典型的< stddef.h>由gcc包含您可以通过以下方式找出系统所在的位置: gcc -E - <<<'#include<stddef.h>' | grep stddef.h 这相当于包括标题< stddef.h>在一个空的C文 这个头文件应该定义NulL或者size_t等宏,但是我发现/usr/include/ linux/stddef.h是空的?为什么?解决方法 标头的实际位置是实现定义的.你看的不是典型的< stddef.h>由gcc包含您可以通过以下方式找出系统所在的位置:
gcc -E - <<<'#include<stddef.h>' | grep stddef.h

这相当于包括标题< stddef.h>在一个空的C文件中并运行gcc -E.

/usr/include / linux中的标头用于编译C库(通常是linux上的glibc). GNU manual说:

The linux,asm and asm-generic directorIEs are required to
compile programs using the GNU C library; the other directorIEs
describe interfaces to the kernel but are not required if not
compiling programs using those interfaces. You do not need to copy
kernel headers if you dID not specify an alternate kernel header
source using ‘–with-headers’.

而C库头文件通常位于/usr/lib /中的某个位置.在我的ubuntu 15.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

底线是,这不是你感兴趣的stddef.h,一般来说,你不应该对标准头文件的位置做任何假设.

总结

以上是内存溢出为你收集整理的为什么/usr/include/linux/stddef.h为空?全部内容,希望文章能够帮你解决为什么/usr/include/linux/stddef.h为空?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1048866.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存