c/c++预定义宏使用举例

当然,下面我会使用一些具体的例子来说明这些预定义宏的用途。

1. 调试和日志记录

例子1:在断言失败时输出文件名和行号

c复制代码

#include <assert.h>
#include <stdio.h>
void my_function() {
int some_value = 0;
assert(some_value != 0 && "Assertion failed in my_function!");
}
int main() {
my_function(); // 如果断言失败,将输出文件名和行号
return 0;
}

在这个例子中,如果assert表达式失败,它将输出一个错误消息,并包含__FILE____LINE__宏,这样你就能知道断言是在哪个文件的哪一行失败的。

2. 条件编译

例子2:根据平台编译不同的代码

c复制代码

#include <stdio.h>
int main() {
#ifdef __WIN32__
printf("Code is compiled for Windows.\n");
#elif defined(__unix__)
printf("Code is compiled for a Unix-like system.\n");
#else
printf("Unknown platform.\n");
#endif
return 0;
}

在这个例子中,我们根据预定义的宏来判断代码是在哪个平台上编译的,并输出相应的消息。

3. 函数名标识

例子3:在函数中输出函数名

c复制代码

#include <stdio.h>
void my_function() {
printf("This is function: %s\n", __func__);
}
int main() {
my_function(); // 输出 "This is function: my_function"
return 0;
}

在这个例子中,__func__宏被用来获取当前函数的名称,并在函数内部打印出来。

4. 版本控制

例子4:检查C标准版本

c复制代码

#include <stdio.h>
int main() {
#if __STDC__
printf("Code is compiled with a C standard.\n");
#if __STDC_VERSION__ >= 199901L
printf("Code is compiled with C99 or a later standard.\n");
#else
printf("Code is compiled with an earlier C standard.\n");
#endif
#else
printf("Code is not compiled with a C standard.\n");
#endif
return 0;
}

在这个例子中,我们检查__STDC__宏来确定代码是否按照C标准编译,并进一步检查__STDC_VERSION__宏来确定是哪个版本的C标准。

请注意,上述宏的确切名称和可用性可能因编译器和平台而异。在编写依赖于这些宏的代码时,最好查阅相关编译器的文档以确认宏的确切名称和用法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值