宏的"#"符号和**"##"**
#define N2+2//仅仅是字符串替换
#define N(2+2)//也是字符串,但是是(2 + 2)
#define area(x) (x) * (x)//带参的宏定义参会当作字符串直接替换
三种特殊的符号:
#define Conn(x, y) x##y//表示连接,数字,字符串都可以
#define ToString(x)#x//就是加上双引号
#@#define ToChar(x) #@x//就是加上单引号,越界会报错、、
#pragma
#pragma可以说是C++中最复杂的预处理指令了,下面是最常用的几个#pragma指令:
#pragma comment(lib,“XXX.lib”)
表示链接XXX.lib这个库,和在工程设置里写上XXX.lib的效果一样。
#pragma comment(linker,"/ENTRY:main_function")
表示指定链接器选项/ENTRY:main_function
#pragma once
表示这个文件只被包含一次
#pragma warning(disable:4705)
表示屏蔽警告4705
#pragma hdrstop。表示预编译头文件到此为止,后面的头文件不进行预编译。
#pragma message。在标准输出设备中输出指定文本信息而不结束程序运行。
#pragma pack。用来改变编译器的字节对齐方式。常规用法为:
#pragma pack(n) //将编译器的字节对齐方式设为n,n的取值一般为1、2、4、8、16,一般默认为8
#pragma region
是Visual C++中特有的预处理指令。它可以让你折叠特定的代码块,从而使界面更加清洁,便于编辑其他代码。折叠后的代码块不会影响编译。你也可以随时展开代码块以进行编辑等操作。需要折叠的代码必须包含在#pragma region和#pragma endregion之间