# 和 ## 宏定义运算符

(1)# 相当于给参数加上引号""

#include <iostream>
using namespace std;

#define func(x) #x		// # 的作用:编译器编译的时候加一个引号""给x,编译后相当于"x"

int main()
{
	// 编译后变成:cout << "Hello C++" << endl; 可以使用g++ -E demo01.cpp > demo01.p命令来验证
	cout << func(Hello C++) << endl;	

	system("pause");
	return 0;
}

 运行:

使用g++ -E demo01.cpp > demo01.p命令来验证:

编译后demo01.p文件:

(2)## 相当于连接把两个参数拼起来,连接起来

#include <iostream>
#include <string>
using namespace std;

// ## 的作用:编译器编译的时候把 x 和 y 拼起来,就是返回 xy
#define func(x, y) x ## y		

int main()
{
	string value = "Hello C++";
	// 编译后变成:cout << value << endl; 可以使用g++ -E demo01.cpp > demo01.p命令来验证
	cout << func(va, lue) << endl;	// func(va, lue) 返回 value

	system("pause");
	return 0;
}

 运行:

使用g++ -E demo01.cpp > demo01.p命令来验证:

编译后demo01.p文件:

所以,执行的时候就输出了 value 的值 Hello C++ 了


 

posted @ 2018-03-04 12:31  半生戎马,共话桑麻、  阅读(152)  评论(0)    收藏  举报
levels of contents