認識できない書式指定子

使用されている書式指定子は、インテル® コンパイラーで認識される標準の指定子ではありません。

このセットでは、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. 無断での引用、転載を禁じます。