Pet*_*sey 5 xcode warnings string-formatting clang compiler-warnings
我在Web上看到了很多关于-Wformat=2Clang选项的提及,有时与已知的-Wformat(Xcode列为"Typecheck调用printf/的那个"一起提及scanf,尽管它现在涵盖了更多的字符串格式化API).
-Wformat呢?如果是的话,它与-Wformat有什么不同呢?
它是从GCC借来的,因为它被设计成适合的替代品.海湾合作委员会的描述:
-Wformat = 2
-Wformat中不包括-Wformat plus格式检查.目前相当于`-Wformat -Wformat-nonliteral -Wformat-security -Wformat-y2k'.
这回答了你的大部分问题.
这有什么用呢?
是.以下程序会发出不同的警告,具体取决于是否存在-Wformat=2:
__attribute__((__format__ (__printf__, 1, 2)))
static void F(const char* const pString, ...) {
}
int main(int argc, const char* argv[]) {
F("", 0);
F(argv[0], 0);
const char str[] = "aaa";
F(str, 0);
F("%i", 0);
F("%i");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
注意:看起来Clang -Wformat-security卷入-Wformat.
最后,我没有测试过-Wformat-y2k,但它被GCC定义为:
-Wformat-Y2K
如果指定了-Wformat,也会警告strftime格式,这些格式可能只产生两位数的年份.
| 归档时间: |
|
| 查看次数: |
1341 次 |
| 最近记录: |