0

私はこの特定のコードの小包を持っているのだろうかと思った

char* usage()
     {
         static char errors[] = {"Sorry Invalid Option entered\nPlease Enter an appropriate option"};        
         return errors;
     }

私は関数を適切に呼び出しました、そしてそれは私が望むことをします。しかし、私がこれを行うとすぐに...私はたくさんのエラーを受け取ります。

char* usage()
     {
         static char errors[] = {"Sorry Invalid Option entered\n
                                 Please Enter an appropriate option"};        
         return errors;
     }

私がしたのは、エラーが発生した1行下の2行目を配置することだけです。さて、私が疑問に思っているのは、2つの違いは何ですか?両方の文字配列に同じ引数を入力しているようです。アレイのスペースをmallocしなかったためですか?

4

2 に答える 2

9

CおよびC++は、そのように複数行のリテラルをサポートしていませんが、これを使用できます。

char* usage()
{
     static char errors[] = {"Sorry Invalid Option entered\n"
                             "Please Enter an appropriate option"};        
     return errors;
}

追加の引用符に注意してください!

于 2013-03-21T19:18:17.353 に答える
5

C(C ++についてはわかりません)では、引用符が文字列を連結するという事実を使用して、数行に文字列を書き込むことができます(この連結はプリプロセッサによって行われます)

char test[] = "one " "two" " " "<= that's a space :)" "\n"
              "three and four\n"
              "five etc and so on\n"
              "\n"
              "for ever and ever ...\n";

注:最後の行を除いてセミコロンはありません。

于 2013-03-21T19:19:09.510 に答える