如果自定义的log函数采用类似printf的格式字符串的话,visual studio 2017没有提供编译选项检查格式是否有效。我们可以用下面的技巧强制检查。
#define LOG_WRAPPER(...) mylog(__VA_ARGS__); if(false) printf(__VA_ARGS__); else;
这样就可以强制VC检查格式字符串是否合法。之所以要在最后加 else;是为了避免如下的代码逻辑被改变。
if(...)
LOG_WRAPPER(...);
else
//do something