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
相关推荐
basketball6162 分钟前
C++ Lambda 表达式完全指南
开发语言·c++·算法
不知名的老吴4 分钟前
C++中emplace函数的不适场景总结(三)
开发语言·c++·算法
Java面试题总结14 分钟前
Go 里什么时候可以“panic”?
开发语言·后端·golang
rit843249915 分钟前
基于MATLAB平台的指纹识别系统实现
开发语言·matlab
沐知全栈开发25 分钟前
TypeScript String
开发语言
ch.ju1 小时前
Java程序设计(第3版)第三章——数组的动态获取
java·开发语言
曹牧1 小时前
Java:PDF文件扁平化处理
java·开发语言·pdf
灰色人生qwer1 小时前
解决IDEA运行Java程序jdk版本不匹配问题
java·开发语言·intellij-idea
小侯不躺平.1 小时前
C++ Boost库【3】 --类型推导
开发语言·c++
枫叶丹41 小时前
【HarmonyOS 6.0】状态栏扩展新特性:点击状态栏图标展开二级菜单的场景动效详解
开发语言·华为·harmonyos