c语言宏注意事项

数值型宏

cpp 复制代码
#define PI 3.14f

常用

cpp 复制代码
#define FILE_SUCCEEDS 0

主要用于方便阅读代码

表达式宏

cpp 复制代码
#define GET_AREA(r) (PI * (r) * (r))

注意宏大写,表达式需要打括号,不然会出bug

语句宏

cpp 复制代码
#define SHOW_ALL (argc)\
    printf("**\r\n");\
    printf("%d", argc);

说明性宏

cpp 复制代码
#define EXPORT

兼容性宏

cpp 复制代码
#define INT int

可以随时修改类型

语句块宏多函数操作

cpp 复制代码
#define DEF_AREA(type)\
    type Area_##type (type)\
    {\
        return (type)3.14f * r * r;\
    }
#define CALL_AREA(type, r) Area_##type(r)

##为连接符

使用时需要声明再调用

cpp 复制代码
DEF_AREA(int);
DEF_AREA(float);
//声明
int n = CALL_AREA(int, 96);
float f = CALL_AREA(float, 93.6f);
//调用

预编译宏

cpp 复制代码
#if Test
    printf("TEST\r\n");
#else
    peintf("NO TEST\r\n");
#endif

使用方法

cpp 复制代码
#ifdef TEST
//定义,进主函数,注意代码先后

编译选项宏

bash 复制代码
cl /c /d "TEST" xxx.cpp

注意事项

编译器内置宏(无法取消)(一般用于排错)

cpp 复制代码
#undef PI
//取消宏定义
__FILE__    文件路径
__LINE__    行号
_MSC_VER    cl版本

宏防重包含

cpp 复制代码
#ifdef
相关推荐
方璧4 小时前
限流的算法
java·开发语言
Hi_kenyon5 小时前
VUE3套用组件库快速开发(以Element Plus为例)二
开发语言·前端·javascript·vue.js
曲莫终5 小时前
Java VarHandle全面详解:从入门到精通
java·开发语言
iuu_star5 小时前
C语言数据结构-顺序查找、折半查找
c语言·数据结构·算法
ghie90905 小时前
基于MATLAB GUI的伏安法测电阻实现方案
开发语言·matlab·电阻
Gao_xu_sheng5 小时前
Inno Setup(专业安装/更新 EXE)
开发语言
吴声子夜歌6 小时前
Java数据结构与算法——基本数学问题
java·开发语言·windows
wanglei2007087 小时前
生产者消费者
开发语言·python
leo__5207 小时前
基于菲涅耳衍射积分的空心高斯光束传输数值模拟(MATLAB实现)
开发语言·matlab