【发布时间】:2021-09-14 08:56:42
【问题描述】:
我有以下宏:
#define MyAssert(condition, ...) CallMyAssertFunctionInCpp(condition, __VA_ARGS__)
__VA_ARGS__是char *类型的错误信息,如果__VA_ARGS__为空,我想让它等于""。
如何做到这一点?我不确定我可以在宏中做条件,但也许有一个技巧?
【问题讨论】:
-
如果是 C++ 那么为什么不直接使用模板呢?它更容易和更清洁
-
IIRC 无法使用宏。几乎所有类函数宏的问题都可以通过使用实际函数来解决。比如这个。你可以让一个模板化的重载带参数,一个不带参数。
-
我必须使用宏来做到这一点
-
为什么你必须使用宏?你需要用这样的宏解决什么实际和潜在的问题?要求和限制的完整列表是什么?
-
stackoverflow.com/questions/11761703/… 和 0 和 1 个参数的重载。
标签: c++ c-preprocessor