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
相关推荐
liangshanbo12156 小时前
虚拟列表深度面试题整理
java·开发语言·前端
ZISHU_9876 小时前
用 TLabel 给 SynTouch BioTac 数据做语义标注:从原始信号到结构化标注
开发语言·人工智能·python·数据·机器人触觉
略略略咯咯7 小时前
C#Unity
开发语言·unity·c#
gugucoding7 小时前
59. 【Java】Spring Boot 入门:第一个 Web 应用
java·开发语言·spring boot
lilian2337 小时前
Harmony os 技术实战|拼豆制图43:压缩字符矩阵上线前如何拦住错位图纸
开发语言·前端·华为·矩阵·harmonyos
进击ing小白7 小时前
Qt 无边框窗口进阶指南
开发语言·qt
点我头像干啥7 小时前
004:多个PDF文件合并
开发语言·pdf·php
En^_^Joy7 小时前
Cadence Skill脚本语言快速入门指南
开发语言
10mAh8 小时前
【Java】HashMap 的 put 到底做了什么?——冲突、扩容与树化实测
java·开发语言·hash
九九落9 小时前
JavaScript 实现北京时间精确到毫秒显示:UTC+8、Asia/Shanghai 与在线时间校准详解
开发语言·javascript·ecmascript