如果自定义的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
本文介绍了一种在Visual Studio 2017中使用自定义log函数时,确保格式字符串合法性的技巧。通过巧妙利用预处理器指令,可以在编译阶段检查格式字符串的有效性,避免运行时错误。

被折叠的 条评论
为什么被折叠?



