在Linux中定义哪个头文件是EINVAL,ENOMEM等?

据说错误号如EINVAL,ENOMEM等是在errno.h中定义的,但是我在errno.h中找不到,还在/ usr / include下search了一些目录,仍然找不到它们。 我可以在我的C代码中使用这些macros而没有任何问题。 任何人都可以告诉我他们在哪里?

它是直接在errno.h中定义的,或者是由errno.h直接或间接包含的文件中定义的。

我使用以下命令搜索它:

find /usr/include | xargs grep ENOMEM | grep '#define' 

并在我的linux(RHEL 6)中的/usr/include/asm-generic/errno-base.h中找到匹配项。

这取决于标准C库的实现。

可以肯定的是, <errno.h>是应用程序代码应该使用的顶级标头。

找出一个方法是追踪编译器的调用。

你可以运行locate errno.h | xargs grep EINVAL locate errno.h | xargs grep EINVAL查找位置

在我的Ubuntu 12.04机器上,它的/usr/lib/syslinux/com32/include/errno.h