限制#define
标签的范围并避免不必要的 token 冲突的正确策略是什么?
在以下配置中:
Main.c
# 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
和_请在下面对我建议的解决方案进行评论。__ 最佳答案
正确的策略是不使用
#define ZERO '0'
#define ONE '1'
完全没有。如果需要常量值,在这种情况下,请使用包装在 namespace 中的
const char
代替。关于c++ - #define标签的限制范围,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12641091/