【问题标题】:In which header file are EINVAL, ENOMEM, etc. defined in Linux?Linux中的EINVAL、ENOMEM等定义在哪个头文件中?
【发布时间】:2013-12-26 18:47:14
【问题描述】:

据说EINVAL、ENOMEM等错误号是在errno.h中定义的,但是我在errno.h中找不到,我也在/usr/include下找了一些目录,还是找不到找到他们。我可以在我的 C 代码中毫无问题地使用这些宏。谁能告诉我他们在哪里?

【问题讨论】:

    标签: c linux errno


    【解决方案1】:

    它要么直接在 errno.h 中定义,要么在 errno.h 包含(直接或间接)的文件中定义。

    我使用以下命令搜索它:

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

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

    【讨论】:

    • 其余在/usr/include/asm-generic/errno.h
    【解决方案2】:

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

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

    一种解决方法是跟踪编译器的调用。

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-15
        • 1970-01-01
        • 2019-08-06
        • 1970-01-01
        • 2021-08-29
        相关资源
        最近更新 更多