printf
の%
変換指定子には、char
配列へのポインタが必要です。 const
の欠如に注意してください。私はこれをC言語の理由で見ることができます.C++にはC99標準が組み込まれているので、これは変わりません。私は、このようなANので、未定義の動作について尋ねていないよ。私はprintf
自分を書いている場合は、私は無事printf%s const char *
case 's' :
ptr = va_arg(va, const char*);
_puts(ptr, strlen(ptr));
break;
この意図しないセマンティクス(ノートを持っているでしょう?:代わりにconst char*
に引数を変換することができます実装はとにかく適合しないでしょうか?)
なぜ地球上では省略記号printfがC++で必要なのです11 ???? – SergeyA
直接質問に答えると、何の効果もありません。 va_argはマクロであり、提供したタイプをそのまま使用します。 – SergeyA
const以外の変数を使用して、 'char const *'で関数を呼び出すことができます。だからあなたの関数で 'char const *'型を使うことをお勧めします。 –