C++/C 编译
1.头文件包含顺序:
头文件:
(1)包含当前工程所需要的自定义文件。
(2)包含第三方程序库头文件。
(3)包含标准头文件。
源文件:
(1)包含该源文件对应的头文件。
(2)包含当前工程所需要的自定义文件。
(3)包含第三方程序库头文件。
(4)包含标准头文件。
2.宏定义
(1)为文件作用域。
(2)不要用宏来定义新类型,需要用typedef。
(3)宏定义里加注释使用/**/,不使用//。
(4)调试宏#ifdef xxx等价于#if define(xxx)。
(5)预编译伪指令#error可以将后面字符输出到屏幕。
(6)预编译伪指令#pragma用于执行语言所定义的动作,如#pragma pack(push, 8) 对象成员对齐,#pragma warning(disable, 4069) 屏蔽4096号编译告警,
#pragma comment(lib, "kernel32.lib") 连入一个库文件。
(5)构串操作符#只能修饰带参数的宏的形参,将实参的字符序列(不是实参的值)转换为字符串,如:
#define STR(x) #x #x "xx"'
int abc = 100;
STR(abc) => "abcabcxx"
(6)合并操作符##将左右的字符序列合并成一个新的标识符,不是字符串,如:
#define CLASSNAME(name) class##name
CLASSNAME(test) => classtest(必须要前面有定义,否则编译报错)
(6)预编译符号常量:
_FILE_ :引用该符号语句的源文件名称
_LINE_:引用该符号语句的代码行号

浙公网安备 33010602011771号