Boost.Format 的编译时检查
Compile-time checking of Boost.Format
Clang和GCC都可以检查printf风格的函数的格式字符串和参数之间的不匹配。 例如,他们会抱怨这样的陈述:
printf("Hello, %s!n");
Boost.Format是否存在类似的内容? 换句话说,是否有任何编译器开关、静态分析工具等可以警告代码,例如
std::string s1 = str(boost::format("Hello, %s!"));
或
std::string s2 = str(boost::format("Hello, %s!") % "John" % "Doe");
看起来不受支持在提升时也创建了一个票证来跟踪它。如果您真的需要,您可能需要选择中继版本。
https://svn.boost.org/trac/boost/ticket/6815
这在
Boost 格式中是不可能的,但 {fmt} 格式库在精神上相似,但使用类似 Python 的格式字符串语法提供了编译时检查。
例如:
#include std::string s = format(FMT_STRING("{2}"), 42);
给出编译时错误,因为格式字符串引用未提供的参数 2。
免责声明:我是 {fmt} 的作者
相关文章:
- C++:编译时检查匹配的函数调用对?
- 在编译时检查字符串文本的长度
- 编译时检查 #pragma 包的使用情况
- 检查编译时是否存在静态函数
- 编译时检查特征专用化是否具有唯一 ID
- MSVC 无法编译 SFINAE 检查
- 运行时检查失败 #0 用于运行时重新编译
- 如何在 clang 的自动会议中检查支持编译标志
- 检查该类在编译时C++中是否有任何基类
- 如何判断是否在编译时计算了"constexpr"(无需手动检查)
- 如何检查在编译时是否调用了模板化方法?
- 如何检查编译的代码是否使用了 SSE 和 AVX 指令?
- 用于检查编译时间常数的静态断言未传递给宏
- 我如何检查编译的时间
- GCC:检查编译为库还是可执行文件
- 检查编译的表达式是否包含所有隐式转换
- 如何检查编译库时使用的CUDA计算兼容性
- R:检查编译和加载标志的值
- 如何检查编译在哪个专门化模板中
- NetBeans c++的方式来检查编译用调试的代码