1.define
define宏展开是在预编译过程进行替换。
#include<stdio.h>
#include<typeinfo>
using namespace std; //C++
#define int int * //注意不能误加分号
void main()
{
int a,b; //预编译:int *a,b; 【*和变量名结合,不和类型名结合。】 a为指针,b为整型。
printf("%s \n",typeid(a).name()); //typeid是运算符(不是函数),检查表达式的类型。
printf("%s \n",typeid(b).name()); //头文件 <typeinfo>里定义,属于C++语法。 .name() 返回类型名字。
#undef int //取消宏替换。
int p;
int s;
}
运行结果: int *
int
也许你会想,上面代码用关键字做宏替换是怎么编译通过的?