加载中…
个人资料
裴大帅2020
裴大帅2020
  • 博客等级:
  • 博客积分:0
  • 博客访问:697,185
  • 关注人气:63
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

C++中define用法

(2020-10-25 23:03:10)
分类: IT技术
参考文档:https://blog.csdn.net/songsong2017/article/details/96336076

1、定义常量

#define ARRMAX 50
 
int arr[ARRMAX];

2、代替模板函数或者内联函数,将函数定义为宏,执行效率很快
#define SWAP(a,b) do\
{\
decltype(a) temp = a;\
a = b;\
b = temp;\
}while(0)

3、预编译逻辑判断

#include
#include
#include "test.h"
 
using namespace std;
 
#define DEBUG
 
 
void MyLog(string logger)
{
#if defined(DEBUG)
    cout << "Logger In This:" << logger << endl;
#endif
}
 
int main(int argc, char** argv)
{
 
#if defined(WIN32)
    cout<<"this device is WIN32" << endl;
#endif 
 
#if !defined(WIN32)
    cout<<"this device is not WIN32" << endl;
#endif 
 
#if defined(WIN32)&&defined(LINUX)
    cout <<"win32 and linux" << endl;
#endif
    MyLog("1");
    MyLog("2");
    MyLog("3");
#undef DEBUG 
    MyLog("4");
 
    system("pause");
}

4、define常规用法综述,参考文档:https://blog.csdn.net/m48o8gewuc/article/details/78140716
#define NUM 1024     -- 标示符别名
#define MAX(X, Y) ((X) > (Y) ? (X) : (Y))    -- 宏函数,用法与普通函数是一样的,但是在编译时会被展开。优点是没有普通函数保存寄存器和参数传递的开销、速度快,缺点是可执行代码体积大。这个现在一般都可能被设计成内敛函数。
#define FB(arg) #arg    -- 字符串化,在宏体中,如果宏参数前加个#,那么在宏体扩展的时候,宏参数会被扩展成字符串的形式
#define LINK_MULTIPLE(a,b,c,d) a##_##b##_##c##_##d
    -- 连接,在宏体中,如果宏体所在标识符中有##,那么在宏体扩展的时候,宏参数会被直接替换到标示符中。

typedef struct _record_type LINK_MULTIPLE(name, company, position, salary);

int main()
{
cout << NUM << endl;
cout << MAX(10, 12) << endl;
cout << FB(A B) << endl;
return 0;
}

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有