@TOC
define的2种用法
- 是预处理指令,有2种用法,定义数值和定义算式,#defind在工程中不建议使用
- ==预处理指令==是在编译之前发生的,就是生成预处理后的中间代码,将宏定义的数值替换掉程序中出现的宏定义变量
定义数值
- 按照如下方式定义数值,就可以在程序中使用了
#define PI 3.14
定义算式
#include<iostream>
#include "test.h"
#define MAX(a,b) a>b ? a:b//定义求最大值的表达式
using namespace std;
int main() {
int a = MAX(10,20);//这里完成了带入替换和展开的过程
cout << a << endl;
return 0;
}
易混点
#include<iostream>
#include "test.h"
#define Value 1+2
using namespace std;
int main() {
int a = 4 * Value;
cout << a << endl;//6
return 0;
}
- 如上述代码,预编译过程没有计算1+2,只是实现了文本代换,把Value替换成了1+2,在代码执行后再进行计算,避免这个陷阱需要加括号(1+2)
defind取代方法
- const关键字
const double PI = 3.14;
- inline函数(请参考C++ inline的用法)
inline char* inline_test(int num) { return (num % 2 > 0) ? "奇" : "偶"; }
补充点
#include包含一个源代码文件 #define定义宏 #undef取消已定义的宏 #if如果给定条件为真,则编译下面代码 #ifdef如果宏已经定义,则编译下面代码 #ifndef如果宏没有定义,则编译下面代码 #elif如果前面的#if给定条件不为真,当前条件为真,则编译下面代码 #endif结束一个#if……#else条件编译块 #error停止编译并显示错误信息
- 对于老函数报错的问题,加上下面的代码
#define _CRT_SECURE_NO_WARNINGS