限制#define
标签范围和避免无根据的令牌冲突的正确策略是什么?
在以下配置中:
主程序
# include "Utility_1.h"
# include "Utility_2.h"
# include "Utility_3.h"
VOID Main() { ... }
实用程序_1.h
# define ZERO "Zero"
# define ONE "One"
BOOL Utility_1(); // Uses- ZERO:"Zero" & ONE:"One"
Utility_2.h
# define ZERO '0'
# define ONE '1'
BOOL Utility_2(); // Uses- ZERO:'0' & ONE:'1'
Utility_3.h
const UINT ZERO = 0;
const UINT ONE = 1;
BOOL Utility_3(); // Uses- ZERO:0 & ONE:1
注: Utility _1
,Utility_2
和Utility_3
已独立编写
错误:宏重定义和令牌冲突
另外,最担心的是:编译器没有指出替换令牌的情况是什么
{Edit}注意:这是一个通用问题,所以请:不要提议enum
或const
即在以下情况下该怎么做:我必须使用#define
& _请在下面评论我提出的解决方案.. __