[英]C++ #define variable parameter function
我有一个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")
和WARN("value is",obj->printvalue())
那将会非常有用。
我也认为inline
做到这一点(从下面的答案)。
这是一种非常接近这种方式的C-ish方式。 简单地使它成为一个重载的inline
函数。 任何名副其实的优化器都会内联这个电话。
我的第一个猜测是你在错误的领域进行优化。 在这种情况下,优秀的编译器将优化。 混淆代码会使编译器更难以这样做。
从c ++书中找到答案:
宏名称不能重载:
#define PRINT(a ,b ) cout <<(a )<<(b )
#define PRINT (a ,b ,c ) cout <<(a )<<(b )<<(c ) /* trouble?: redefines, does not overload */
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.