为什么会有宏函数呢?
在写代码时,直接写一些简单的语句,再用函数封装
宏函数的缺陷有哪些呢?
#define _CRT_SECURE_ND_WARNINGS
#include<iostream>
using namespace std;
//1.不加小括号会出现运算问题
//定义一个加法
#define MyAdd(x,y) x+y//((x)+(y))
void text01()
{
int ret = MyAdd(10, 20)*20;//预计结果600 实际410 运算状态10+20*20
//解决措施 ((x)+(y)) 运算状态((10)+(20))*20
cout << "ret= " << ret << endl;
}
#define MyCompare(a,b)(a)<(b)?(a):(b)//a<b输出a否则输出b
//2.加了小括号也会出现问题
void text02()
{
int a = 10;
int b = 20;
int ret = MyCompare(++a, b);//预期结果11 实际输出12 ((++a)<(b)?(++a):(b) a+1<b输出a+1+1
cout << "ret= " << ret << endl;
}
//3.宏函数没有作用域
int main() {
text01();
text02();
system("pause");
return EXIT_SUCCESS;
}