ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 一.预包含 1. <>与""的区别 + #include <> 表示从系统库中包含文件。 >系统库的目录列表可以在 VC++6.0->选项->目录->Include files中找到。 + #include "" 表示从工作目录和系统目录中包含文件。 ## 二.宏定义 1. 定义宏常量(中间以空格隔开,末尾一般无需分号) ```c++ #define NAME VAL ``` 2. 定义带参宏 >[danger] 注意宏名与参数间不能有空格 ```c++ #define S(a,b) a*b ``` 3. 取消定义宏常量 ```c++ #undef NAME ``` 4. **注意** 宏常量只是一个简单的复制粘贴 ```c++ #include <iostream> #define T 2+3 void main() { int a = T * 2;//编译成2+3*2 std::cout<<a; } ``` >[test] > 8 ```c++ #include <iostream> #define S(r) r*r void main() { int a = 2,b = 3; std::cout<<S(a + b);//编译成 2+3*2+3 } ``` >[test] > 11 >[success]在用宏定义时,参数名和表达式最好用括号括起来 ```c++ #include <iostream> #define S(r) ((r)*(r)) void main() { int a = 2,b = 3; std::cout<<S(a + b); } ``` >[test] > 25 5. 该命令不会替换字符串常量中的内容。 6. C++中建议使用const和内置函数代替宏定义,因为: + 宏定义没有类型,编译时也不做类型检查,值也只是简单的复制粘贴,容易出错。 + IDE调试时可以监视const常变量。 ## 三.条件编译 1. #if EXPRESSION,#elif EXPRESSION 语句 当后面的常量表达式为真时编译下面的语句 2. #ifdef MACRO 如果定义了MACRO宏则编译下面的语句 3. #else 否则 4. #endif 结束如果 ```c++ #include <iostream> #define T 2020 #ifdef T void main() { int a = T; std::cout<<a; } #else void main() { int a = 2035; std::cout<<a; } #endif ``` >[test] >2020 ## [$]四.布局控制 #pragma 1. **功能** 为编译程序提供非常规的控制流信息。 2. 预处理期将忽略它不认识的 #pragma 指令,不同的编译器可能以不同的方式解释同一条 #pragma 指令。 ```c++ #include <iostream> #define T 2020 #ifdef T #pragma message("OHHHHHHHH") #else #pragma message("NOT DEFINED") #endif void main() { int a = 2333; std::cout<<a; } ``` 输出部分提示 >[test] > --------------------Configuration: test - Win32 Debug-------------------- >Compiling... >test.cpp >OHHHHHHHH >test.obj - 0 error(s), 0 warning(s)