c/c++开发分享使用#define重新定义枚举枚举器

我在C头文件中发现了一些我无法弄清楚是什么的东西。 例如,在文件bits/socket.h有一个枚举类型enum __socket_type ,但是在每个枚举器之后都有一个定义宏的定义宏。 例:

 enum __socket_type { SOCK_STREAM = 1, #define SOCK_STREAM SOCK_STREAM ... }; 

我一直无法知道这是为了什么。 请赐教。 我甚至不知道如何形成正确的问题来查询谷歌或这个网站搜索框。

    预处理器宏永远不会递归扩展,因此#define所做的就是将名称保留在使用它的位置。 当您想要进行预处理器function测试时,这些function非常有用。

     #ifdef SOCK_STREAM .. #endif 

    可以用来有条件地编译一些代码。

    编辑:因此,它结合了清晰的枚举方法(隐式值,没有冲突和作用域)和预处理器测试。

    我唯一能想到的是因为人们看到全部大写的常数,比如说NUM_FILES ,他们会认为这是一个宏,并且很想写这个:

     #ifdef NUM_FILES 

    现在通常这会失败,但如果你写#define NUM_FILES NUM_FILES它就像预处理器和IDE的宏一样,并作为代码本身的枚举。

    我怀疑是IDE或其他工具可以理解符号是以某种方式定义的。

      以上就是c/c++开发分享使用#define重新定义枚举枚举器相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注(猴子技术宅)。

      本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

      如若转载,请注明出处:https://www.ssfiction.com/c-cyuyankaifa/545924.html

      发表评论

      电子邮件地址不会被公开。 必填项已用*标注