Xcode -Wformat=2的作用是什么?
我在网上看到了大量关于叮当声的Xcode -Wformat=2的作用是什么?,xcode,warnings,clang,string-formatting,compiler-warnings,Xcode,Warnings,Clang,String Formatting,Compiler Warnings,我在网上看到了大量关于叮当声的-Wformat=2选项的提及,有时与已知的-Wformat(Xcode将其列为“Typecheck调用printf/scanf,尽管它现在涵盖了更多的字符串格式API) 这有什么用吗 如果有,它与-Wformat有什么不同 两者兼有有用吗,或者其中一个是另一个的超集 如果有,它与-Wformat有什么不同 它是从GCC借来的,因为它被设计成一个合适的替代品 -Wformat=2 启用-Wformat plus格式检查未包含在-Wformat中。当前 相当于`-
-Wformat=2
选项的提及,有时与已知的-Wformat
(Xcode将其列为“Typecheck调用printf
/scanf
,尽管它现在涵盖了更多的字符串格式API)
- 这有什么用吗
- 如果有,它与
有什么不同-Wformat
- 两者兼有有用吗,或者其中一个是另一个的超集
-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;
}
注意:它似乎将-Wformat security
转换为-Wformat
最后,我没有测试-Wformat-y2k
,但GCC将其定义为:
-Wformat-y2k
如果指定了-Wformat,还将警告可能只产生两位数年份的strftime格式
-Wformat-y2k
似乎没有实现;我只是用一个使用%y
(世纪)转换说明符的程序进行了尝试,没有收到任何投诉。谢谢。