代码之家  ›  专栏  ›  技术社区  ›  vividos

如何检测是否定义了errno_t?

  •  6
  • vividos  · 技术社区  · 16 年前

    <errno.h> 没有定义类型。如何检测类型是否已定义?是否有一个定义表明该类型已被定义?如果没有定义,我想提供typedef,让代码在所有平台上正确编译。

    4 回复  |  直到 16 年前
        1
  •  2
  •   hobbs    16 年前

    微软的 errno_t errno ISO C标准将其定义为可修改的左值类型 int 。如果您的代码需要存储 错误号 值,那么您应该将它们放入 整数 .

    s/errno_t/int/

    编辑: 此外,你不应该提供 typedef int errno_t _t 保留。

        2
  •  6
  •   alex tingle    16 年前

    autoconf , this patch errno_t 如果它缺失,请定义它(typedef将被放置在一个文件中,该文件包含您生成的 config.h 并且包含在所有需要的文件中 errno_t 你需要想出一些方法在构建系统中做同样的事情,或者针对编译器版本宏进行一组非常聪明的测试。

        3
  •  0
  •   fbonnet    16 年前
        4
  •  0
  •   Jeff Ober    16 年前

    如果你知道GCC的哪个版本给你带来了麻烦,你可以测试它们。您可以使用以下方式检查GCC的版本:

      #if __GNUC__ == 3
      ...
      #else
      ...
      #endif