宏和函数的区别
例:
#define Max(a,b) ((a)>(b)?(a):(b))
1.宏在预处理阶段会被编译器替换掉,而且宏一般只做简单的文本替换,编译器对其不做任何的语法检测。
当编译器在预处理的过程中进行宏替换时,一般进行如下三步:
1、在调用宏时,首先对参数进行检查,看看是否包含任何由#define定义的符号。如果是,它们首先被替换;
2、替换文本随后被插入到程序中原来文本的位置。对于宏,参数名被它们的值替换;
3、最后,再次对结果文件进行扫描,看看它是否包含任何由#define定义的符号。如果是,就重复上述处理过程。
2.定义宏主要用于两个方面:
(1)简单的文本或字符串的替换
(2)宏函数(如上例)[注:宏函数的定义和其他宏一样,但在定义其表达式时要注意在宏定义上加括号,否则会出现由运算优先级导致的问题。]
#include<iostream>
using namespace std;
#define Max(<