C语言强大的宏定义可以让基本所有可识别的标识符变成想要的定义,甚至包括关键字,比如int整型变成短整型。
#define int short
- 还有广为人知的C语言 { } 和Pascal语言BEGIN/END转换的方法:
#define BEGIN {
#define END }
- 需要注意的是,#define宏名称必须是标识符 (macro names must be identifiers),意味着只有普通标识符(包括变量名和函数名)、关键字可以被替换。
#define ; ^
这种代码是无法通过编译的。事实上,替换非ASCII码的可能性非常低,大概率不符合程序员的本意,即使有这种需求,应该是代码真写错了,可以用sed或其他统一替换做修改。
- #define printf my_print 是一种很好的不想改代码做函数替换方法,但需要注意,这可能产生误解。更常用的处理方法是,不要改变库函数printf的本意,#define my_print printf可能更符合意图。
- 替换变量名
- #define a b是将代码中所有a都替换成b, 搞笑效果很不错。
#define a b
int a = 1;
printf("%d\n", b);
