c - 在#define 定义中获取变量值

标签 c macros

这是我正在尝试做的事情。

step1)我想用条件语句(简单的复合)调用宏

例如:

 MACRO1(a==1)
 MACRO1((i!=NULL) && (j>10))

step2) 下面是我如何定义这个宏

#define MACRO1(condition) \
        if(!(condition)) ??????????????????????????

这里在宏的定义中,如果条件语句失败。我想打印变量值,以便了解确切原因。 我在定义中使用了#condition,但它只是打印条件,而不是条件中使用的变量的值。请帮忙。

最佳答案

你可以按照这些思路做一些事情:

#define MACRO1(condition, msg) \
    if(!(condition)) { printf msg; }

并按如下方式使用它:

MACRO1(a==1, ("a: %d\n", a))
MACRO1((i != NULL) && (j>10), ("i: %p, j: %d\n", i, j));

C预处理器只是一个简单的替换引擎,没有分析表达式内容的能力。

关于c - 在#define 定义中获取变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19675283/

相关文章:

c - 如何将宽字符串文字与 PRId32、PRIu64 等连接起来?

macros - 如何在编译时显示 #define 的值?

vba - 如何检查字符串是否包含连续整数

使用数组输入和数组输出为 PostgreSQL 创建简单的 C 函数

c++ - 缺少大小的数组与指针

有人可以解决以下表达式的优先级吗?

c++ - 宏 ((void(*)())0)() 是什么意思?

c - 有什么技巧可以禁止 C 宏被称为左值吗?

c - 为什么我的更复杂的 C 循环更快?

c - 为什么 Kernighan 和 Ritchie 不将 int 包含在 main 函数中?