我有一个对 CPU 敏感的应用程序,并希望最大限度地减少函数调用。我想写一些类似的东西:
#ifdef condition
#define f(a,b) ff(a,b)
#define f(a) ff(a)
#endif
但是编译器会多次看到 f 的定义。我想使用__VAR_ARGS__
,但在上面的示例b
中是enum
类型。有没有合适的方法,或者我应该重命名f(a,b)
为f2(a,b)
?
为了澄清定义,如果处于活动状态,请添加对处理数据以打印到文件/标准输出的函数的调用,否则它们将被替换为空行,所以我认为这种方法会提高代码大小,因为宏是单行关键字,如INFO(object->contents)
我认为它更具可读性。如果我可以添加类似WARN("message")
and的内容也会很有用WARN("value is",obj->printvalue())
。
我也认为inline
可以解决问题(来自下面的答案)。