宏相当于替换一个常量或语句
格式是#define 替换名字 被替换的
比如:
#include <iostream>
#define LL long long
这就是将long long
替换为LL
,之后用LL
编译器就知道是long long
#include <iostream>
#define LL long long
using namespace std;
int main()
{
LL a;
}
这时编译器就知道你要定义一个long long
类型的变量a。
甚至可以:
#define repeat(n) for(int i = 1; i <= n; i++)
但是define也有缺点,比如下列代码
#include <iostream>
using namespace std;
#define add(a,b) a+b
int main()
{
cout << add(1,2)*3;
}
请问这个会输出什么?
很多人会以为是9,实际上是7
为什么?
因为define是在编译之前替换,那么上面的代码相当于:
#include <iostream>
using namespace std;
int main()
{
cout << 1+2*3;
}
和预期的完全不一样
所以,请谨慎使用define