MFC对#define偏爱有加,但是我们在应用的时候要注意一下几条:
1、宏定义应该简单清晰,不要定义非常复杂的宏,彼此嵌套,结合等等
2、如果需要公布某个宏,那么该宏应该放置在头文件中,否则放置在实现文件的顶部
3、定义新类型,记得还有typedef
4、给宏添加注释用/* */,很多宏将//视作宏本身的一部分
5、定义符号常量记得const,enum
6、对于较长的使用频率较高的代码片段,建议使用函数或模板而不要使用带有参数的宏
7、避免在全局范围中定义宏,除非它只在该局部范围内使用,否则损害程序清晰性。
请注意##应用
比如#define TEXT(x,y) x##y##x
cout<<TEXT(u,to);会是什么呢?
TEXT(u,to)本身是一个标识符utou,如果没有定义则输出是错误的
如果本意是输出字符串则应为下式
cout<<TEXT("u","to");
这样应该好理解一些了...~~
#define TEXT(x,y) #x###y###x
cout<<TEXT(u,to);会是什么呢?
很明显,其输出为utou为一个字符串。