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;
     }

我所做的只是将第二行放在下面一行我得到错误。现在,我想知道的是两者之间有什么区别?我似乎在两个字符数组中输入了相同的参数。是因为我没有为数组分配空间吗?

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 回答