c++编译的四个过程:预处理、编译、汇编、链接;
一、typedef的用法
在C/C++语言中,typedef常用来定义一个标识符及关键字的别名,它是语言编译过程的一部分,但它并不实际分配内存空间,实例像:
typedef int INT;
typedef int ARRAY[10];
typedef (int*) pINT;
typedef可以增强程序的可读性,以及标识符的灵活性,但它也有“非直观性”等缺点。
二、#define的用法
#define为一宏定义语句,通常用它来定义常量(包括无参量与带参量),以及用来实现那些“表面似和善、背后一长串”的宏,它本身并不在编译过程中进行,而是在这之前(预处理过程)就已经完成了,但也因此难以发现潜在的错误及其它代码维护问题,它的实例像:
#define INT int
#define TRUE 1
#define Add(a,b) ((a)+(b));
#define Loop_10 for (int i=0; i<10; i++)
三、#和##
#将传入的参数变为字符串,字符串化
合并操作符##将出现在其左右的字符序列合并成一个新的标识符。
#include <iostream>
#define g(x) hello##x
#define h(y) #y
using namespace std;
int main() {
string hellodog = "dogAndCat";
cout << g(dog) << endl; //拼凑出来的需要是已经申明的某个变量名
cout << h(dogAndCat) << endl; //直接可以将参数转换为字符串
return 0;
}
执行结果:
dogAndCat
dogAndCat