c++ - 如何检测是否定义了 errno_t?

标签 c++ typedef errno

我正在使用来自 Visual C++ 2008 的 gcc 编译代码。代码使用的是 errno_t,但在某些版本的 gcc header 中包括 <errno.h>没有定义类型。如何检测类型是否已定义?是否有一个定义表明类型已定义?如果它未定义,我想提供 typedef 让代码在所有平台上正确编译。

最佳答案

Microsoft 的 errno_t 是多余的。 errno 由 ISO C 标准定义为 int 类型的可修改左值。如果您的代码需要存储 errno 值,那么您应该将它们放入 int 中。

进行全局搜索并替换 s/errno_t/int/ 就完成了。

编辑:此外,您不应在代码中提供 typedef int errno_t,因为所有以 _t 结尾的名称都是保留。

关于c++ - 如何检测是否定义了 errno_t?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1464711/

相关文章:

c++ - 将 typedef 函数指向另一个类中的另一个函数

c# - 如果没有 `typedef` ,如何创建在 C# 泛型中使用的相关类型组?

python - IO错误 : [Errno 22] invalid mode ('w' ) or filename

c - C 库应该如何管理错误?

c++ - 尝试设置迭代器时出现奇怪的错误

c++ - 如何在 C++ 类中使用引用变量?

c++ - Prewitt 滤波器、边缘检测

c++ - sockaddr_storage 大小为 128 字节

c++ - 初始化一个结构,其成员是另一个结构的数组

c - 为什么 errno,当 POSIX 函数通过返回 -1 或 NULL 指示错误条件时