gpt4 book ai didi

c++ - errno 是 errno.h 中的 int 或 macro

转载 作者:太空狗 更新时间:2023-10-29 23:06:48 29 4
gpt4 key购买 nike

我看过这段代码:

#if !defined(errno)
extern int errno;
#endif

所以我的问题是 errno 是 int 还是 macro ,因为使用 #if if 可以检查是否定义了 macro 并且在我们执行 extern int errno 之后;

在errno.h中是这样定义的

#ifdef  _ERRNO_H

/* Declare the `errno' variable, unless it's defined as a macro by
bits/errno.h. This is the case in GNU, where it is a per-thread
variable. This redeclaration using the macro still works, but it
will be a function declaration without a prototype and may trigger
a -Wstrict-prototypes warning. */
#ifndef errno
extern int errno;
#endif


#endif

最佳答案

在 C++ 中(从 n3376 开始)如果你包含 errno 被定义为一个宏,否则如果你包含 它就是它在 C 中定义的任何东西(我怀疑上面给出的一个整数(但你需要查看 C 标准(根据下面的 Alok:“未指定 errno 是宏还是标识符”))。

n3376:

19.4 错误编号[errno]

The header <cerrno> is described in Table 43. Its contents are the same as the POSIX header <errno.h>, except that errno shall be defined as a macro.

关于c++ - errno 是 errno.h 中的 int 或 macro,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14556336/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com