使用されている書式指定子は、インテル® コンパイラーで認識される標準の指定子ではありません。
このセットでは、ANSI 標準規格に含まれていない拡張が使用されています。インテル® コンパイラーは、次の形式の書式指定子を認識します。
"%[flags] [width] [.precision] [size] type"
flags (フラグ) は "0-+ #" のうちの 1 つまたは複数の文字、width (幅) と precision (精度) は正の 10 進整数またはアスタリスク (*)、size (サイズ) は "h"、"l"、"ll"、"I"、"I32"、"I64"、"w" のいずれか、type (型) は "aAcCdeEfFgGinopsSuxX%" のうちの 1 文字です。すべての size と type の組み合わせを使用できるわけではありません。例えば、"w" (ワイド文字) は、type が "c" (文字) または "s" (文字列) の場合のみ使用できます。
同様のエラーは、特定のパラメーター番号を参照する POSIX* 拡張構文でも発生します。例えば、"%1$d" は、この書式指定子が書式文字列のどの位置にあっても、最初の引数を使用してフォーマッター (整数値) を提供します。この構文は、Windows* OS ではサポートされていません。
ID |
問題箇所 |
説明 |
---|---|---|
1 |
書式の不一致 |
書式文字列が使用された場所 |
#include <stdio.h> extern int x,y; int main(int argc, char **argv) { printf("%d %z", x, y); // %z is an unrecognized format specifier printf("%2$d %1$d, x, y); // unusable on Windows // example above is equivalent to printf("%d %d", y, x); }
© 2010 Intel Corporation. 無断での引用、転載を禁じます。