-qformat (-Wformat)

适用的调用

表 1. 接受给定选项的调用
选项 xlc (编译 C) xlC (编译 C++) xlclang(编译 C) xlclang++(编译 C++)
-qformat    
-Wformat    
注: 此表中仅列出典型调用。 对于所有基本调用及其等效特殊调用,您可以参阅 编译器调用的完整列表

类别

错误检查和调试

等效编译指示

无。

用途

就可能存在的有关字符串输入和输出格式规范的问题发出警告。

诊断的函数为 printfscanfstrftimestrfmon 系列函数和带有格式属性标记的函数。

语法

读取语法图跳过可视语法图  -W noformatexarg-argszero-lengthformat=n2nonliteralsecurityy2k
读取语法图跳过可视语法图 -q noformatformat=:allnoallexargnoexargnltnonltsecnosecy2knoy2kzlnnozln

如需了解 -Wformat 选项的详细信息,请参阅GCC信息,网址为 http://gcc.gnu.org/onlinedocs/

缺省值

-qnoformat-Wno-format

参数

all | noall
启用或禁用所有格式诊断消息。
exarg | noexarg
警告 printfscanf 样式函数调用中是否出现多余的自变量。
nlt | 非 lt
警告格式字符串是否不是字符串文字,除非格式函数将其格式自变量作为 va_list
秒 | nosec
警告使用格式函数时可能存在安全问题。
y2k | noy2k
发出生成 2 数字年份的 strftime 格式的警告。
zln | nozln
警告长度为零的格式。
指定不带子选项的 -qformat 等同于 -qformat=all

-qnoformat 等同于 -qformat=noall

预定义的宏

无。

示例

要启用所有格式字符串诊断,请输入以下任一内容:
xlc myprogram.c -qformat=all
xlc myprogram.c -qformat
要启用除 y2k 日期诊断以外的所有格式诊断检查,请输入:
xlc myprogram.c -qformat=all:noy2k