#include "stdafx.h"
#include "iostream"
using namespace std;
//
//**************define相关的符号*********//
//
//同名宏根据声明先后的顺序进行覆盖,在预编译期间进行替换,从第一个定义宏开始到重名宏之间为第一个宏的作用域
//
//在换行的反斜杠后不允许出现注释或者空字符等
//
#ifndef TEST
#define TEST
#endif
#if 0
#define Test(a,b) (a+b) //a+b的括号必须加上,否则替换后会出现c*a+b类似情况
#define RUN \
int value = 10 * Test(1, 1); \
std::cout << "() Test(1,1)=" << value << endl; //2
#endif
#if 0
#define Test(a) #a
#define RUN \
char* value = Test(abc); \
std::cout << "# Test(abc)=" << value << endl; //"1"
#endif
#if 0
#define Test(a,b) a##b //num
#define Test(a,b) #a###b //char
#define RUN \
char* value = Test(1,1); \
std::cout << "## Test(1,1)=" << value << endl; //"11"
#endif
#if 1
#define Test(a) #@a //char
#define RUN \
char value = Test(1); \
std::cout << "#@ Test(1)=" << value << endl; //'1'
#endif
#if 0
#undef RUN
#endif
int main()
{
RUN;
system("pause");
return 0;
}
#define宏相关符号
于 2022-04-04 17:44:30 首次发布