这篇文章我们讲一下C++当中的宏。其实接触过大型项目的朋友可能都被诡异的宏折磨过。
宏是在预处理当中,通过文本替换的方式来实现一些操作,这样可以不用反复的输入代码,帮助我们实现自动化。至于预处理的过程,其实就是文本编辑,这个在之前的文章中有提到过。
替换的具体内容,可能是普通文本,也可以是参数变量等各种东西,可以说,就没有什么是不能够被宏替换掉的,我们可以拿来替换非常复杂的内容。但是需要注意的是,我们不希望拿宏来替换太多与C++特性有关的代码,这样并不是一个好的做法,因为会降低代码的可读性,虽然这样做是没有任何问题的。
举个例子,我们用宏替换到我们常用的cin.get()语句:
#include<iostream>
#include<string>
#define WAIT std::cin.get()
int main() {
std::cout << "Hello World!" << std::endl;
WAIT;
}
这样写当然是可以的,是能够编译通过的,但是这种写法是很傻的。因为cin.get()是非常常用的语句,但是使用一个WAIT来替换它,反而会降低代码的可读性,让其他人看得一头雾水。
当然,分号也可以是宏的一部分,如果想的话也可以把分号写在宏里面,那么就不用在代码里面再写分号了。
接下来我们看看如何在宏当中定义函数。
#include<iostream>
#include<string>
#define LOG(x)