在c语言中,宏是可以带参数的,它在形式上和函数非常相似。不过不像函数,宏仅仅是字符串替换,不是按值传递。
使用宏的一个经典例子是求一个数的平方,如下所示:
#include <iostream>
using namespace std;
#define SQ(y) y*y
int main(){
int n, sq;
cin>>n;
sq = SQ(n);
cout<<sq<<endl;
return 0;
}
在编写C++代码时推荐使用内联函数来代替带参数的宏。
和宏一样,内联函数可以定义在头文件中(不用加 static 关键字),并且头文件被多次#include
后也不会引发重复定义错误。这一点和非内联函数不同,非内联函数是禁止定义在头文件中的,它所在的头文件被多次#include
后会引发重复定义错误。