检测C源中枚举和#define同名的定义
发布时间:2020-12-16 09:59:59 所属栏目:百科 来源:网络整理
导读:我们有一个C源代码,它使用#define和enum进行大量定义.最近在分析错误时,我们发现使用#define预处理器指令进行了一些定义,这些定义也是枚举的成员.分配给它们的值虽然不同. 例如, #define ABC 100typedef enum{ ABC = 1,DEF} MY_ENUM; ABC在两个地方定义. 令
我们有一个C源代码,它使用#define和enum进行大量定义.最近在分析错误时,我们发现使用#define预处理器指令进行了一些定义,这些定义也是枚举的成员.分配给它们的值虽然不同.
例如, #define ABC 100 typedef enum { ABC = 1,DEF } MY_ENUM; ABC在两个地方定义. 令人惊讶的是,Visual Studio没有给我们一个错误.甚至没有警告. 我们担心可能会有其他定义以相同的方式定义并希望找到它们. 提高编译器的警告级别并没有给我们任何错误.当存在这样的重新定义时,我们仍然可以无错误地构建源.警告的数量大量增加,并且有太多的警告要逐一进行. 有谁知道检测这些多重定义的方法? 我们使用Visual Studio 2010 Professional作为IDE. 解决方法
使用枚举类而不是枚举.这样,您可以确保在正确的位置使用正确的东西
您可以通过以下答案获得更好的主意 注意:枚举类是C 11功能,不属于Visual Studio 2010支持的功能. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |