0
点赞
收藏
分享

微信扫一扫

C++ 宏定义#define

@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
举报

相关推荐

0 条评论