Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xcode -Wformat=2的作用是什么?_Xcode_Warnings_Clang_String Formatting_Compiler Warnings - Fatal编程技术网

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有什么不同

它是从GCC借来的,因为它被设计成一个合适的替代品

-Wformat=2

启用-Wformat plus格式检查未包含在-Wformat中。当前 相当于`-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;
}
注意:它似乎将
-Wformat security
转换为
-Wformat

最后,我没有测试
-Wformat-y2k
,但GCC将其定义为:

-Wformat-y2k

如果指定了-Wformat,还将警告可能只产生两位数年份的strftime格式


-Wformat-y2k
似乎没有实现;我只是用一个使用
%y
(世纪)转换说明符的程序进行了尝试,没有收到任何投诉。谢谢。