我正在尝试#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以消除编译错误,同时保持代码逻辑正确?