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
相关推荐
持力行3 小时前
从C struct到C++中的class
c语言·c++
meilindehuzi_a4 小时前
从零理解并实现 RAG:用 LangChain.js 构建语义检索问答系统
开发语言·javascript·langchain
风流 少年4 小时前
Julia
开发语言·julia
江畔柳前堤4 小时前
GO01-Go 语言与主流编程语言深度对比
开发语言·人工智能·后端·微服务·云原生·golang·go
:-)5 小时前
算法-归并排序
java·开发语言·数据结构·算法·排序算法
GIS阵地6 小时前
QgsRasterDataProvider 完整详解(QGIS 3.40.13 C++)
开发语言·c++·qt·开源软件·qgis
yaoxin5211237 小时前
462. Java 反射 - 获取声明类与封闭类
java·开发语言·python
阿里嘎多学长7 小时前
2026-07-14 GitHub 热点项目精选
开发语言·程序员·github·代码托管
charlie1145141918 小时前
Cinux: 为大内核铺路
开发语言·c++·操作系统·现代c++
2501_914245938 小时前
C语言设计模式详解:从理论到实践的完整指南
c语言·开发语言·设计模式