我有一个C记录仪++应用程序,使用了如下定义:是否可以创建一个不会产生警告的空函数?
#define FINEST(...) Logger::Log(FINEST, _FILE, __LINE, __func, __VA_ARGS_)
不过我想这样做是为了能够,因为他们在我的系统性能产生严重影响关掉这些日志。而且,仅仅让我的记录器不能写入系统日志是不够的。我真的需要摆脱由日志产生的代码。
为了做到这一点,我改变了定义到:
#define FINEST(...)
其中一期工程,但这会产生一大堆警告的在我的代码,因为现在的变量是未使用。所以我想要的是一种实际上不存在的NULL FUNCTION,但不会为未使用的变量产生警告。所以,换一种说法,我希望它在没有警告的情况下编译(即编译器认为变量用于函数),但函数实际上并不存在于应用程序中(即不产生性能影响) 。
这可能吗?
谢谢!
这是更容易,如果你把你的'#defines'内反引号(代码)来读取。 – Cameron 2010-03-17 20:39:48
人们会提供一些建议,这些建议会让编译器相信这些变量在不被使用时会被使用 - 这会损害您的发布代码中的优化。 – 2010-03-17 20:41:43
为什么不只是调整编译器的警告级别?这似乎更容易。 – 2010-03-17 20:42:53