总结:
C程序的第一个步骤就是预处理,预处理器共包含以下几个符号:
1、#define
定义宏,替换作用。
它把一个符号名与任意的字符序列联系在一起。例如,这些字符可能是一个字面值常量、表达式或者程序语句。这个语句到末尾结束,不需要;
如果过长的话可以用一个反斜杠,如:
#define PRINT(FORMAT,VALUE)\
printf("The value of " #VALUE\
" is " FORMAT "\n", VALUE)
...
PRINT("%d", X+3);
output: The value of x+3 is 25.
这里面#VALUE相当于把一个宏参数转换为一个字符串。
有些可以用函数实现的也可以用宏实现,宏的优点就在于它与类型无关。而且宏的执行速度快于函数。因为他不存在函数调用返回的开销,在编译的时候就已经弄好了。
缺点就是使代码过长,同时具有不可预测的副作用,函数在这方面更容易预测。比如可能会执行多次(意料之外),可能会涉及优先级的问题。
两者不同也在于,命名约定也不同,比如max(a,b);和MAX(a,b);