piC*_*kie 1 visual-c++ c-preprocessor
在这个最大限幅剪辑的源示例中,正在重新定义清单常量FOOBAR.这是故意的,并且在实时案例中有额外的代码来使用每个定义.
添加了pragma以消除警告消息,但随后出现了一个注释,我似乎没有找到摆脱注释的方法.
我已经能够将这个特定的源修改为#undef之间#define,但是我想知道是否有一种方法可以在不需要的情况下禁止注释#undef,因为有多个常量以相同的方式处理.
#pragma warning( disable : 4005 ) // 'identifier' : macro redefinition
#define FOOBAR FOO
#define FOOBAR BAR
Run Code Online (Sandbox Code Playgroud)
编译器横幅和输出如下
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8804 for 80x86
Copyright (C) Microsoft Corp 1984-1998. All rights reserved.
message.c
message.c(3) : note C6311: message.c(2) : see previous definition of 'FOOBAR'
Run Code Online (Sandbox Code Playgroud)
除非新定义与当前定义相同,否则不允许重新定义宏(如果重新定义宏并且新定义与当前定义不同,则程序实际上格式不正确).
#undef在重新定义之前使用宏是正确的做法:
#undef FOOBAR
#define FOOBAR FOO
#undef FOOBAR
#define FOOBAR BAR
Run Code Online (Sandbox Code Playgroud)
请注意,#undef即使当前未定义宏名称,也允许使用,因此没有理由#ifdef在使用宏之前测试宏是否已定义#undef.
| 归档时间: |
|
| 查看次数: |
654 次 |
| 最近记录: |