我正在尝试#define
为ASSERT()
使用而写作__VA_ARGS
。
(此代码适用于不支持所有 libc 功能的嵌入式处理器)。
我的源代码是这样的:
ASSERT(msg == NULL)
ASSERT
在头文件中:
#define ASSERT(...) if(__VA_ARGS__) { printf("[ASSERT ERROR]" __VA_ARGS__ "\n"); }
预处理器输出是这样的,导致编译错误。
if(msg == NULL) { printf("[ASSERT ERROR]" msg == NULL "\n"); }
如何修复#define
以消除编译错误,同时保持代码逻辑正确?