0

私は自分の仕事を助けるためにCでいくつかのプリプロセッサマクロを書くことに取り組んできました。

            # define    printSTRING(s) printf( # s " has the value");   \
                        for( ; *s != '\0'; s++) \
                        printf(*s); \
                        getch();

エラーが発生しました:C2105: '++' needs l-value

printSTRING(Payload);私がどこPayloadに電話するときchar Payload[] = "wjdoidnjdeioejneiodejndo";

私はそれがPayloadcharポインタとして見られないと思いますが、問題を修正する方法がわかりません。

4

2 に答える 2

4

それはあなたが得るエラーだけではありません。putchar()代わりに、単一のchar引数をとる(指定printf()char *ていないフォーマット文字列をとる)を使用することをお勧めします。または、puts()文字列全体を出力するwhichを使用できます(この場合、ループを自分で作成する必要はありません)。

エラーが発生する理由は、ポインタではなく配列Payloadの名前であるためです。配列の先頭へのポインタであるかのように配列の名前を使用することはできますが、配列を「インクリメント」することはできません。

于 2012-07-11T20:12:39.870 に答える
3
  1. あなたはprintfを悪用しています-それが'%s'フォーマット指定子がここにある理由です。
  2. 'Payload'はcharポインターとしてではなく、char配列として宣言されました。配列のアドレスを変更することはできません。単純に使用する

    #define printSTRING(s) printf("%s has the value %s", #s, s)
    

代わりは。

于 2012-07-11T20:14:13.853 に答える