2013-03-21 6 views
0

내가했다가 wondeirng 내가 제대로 함수를 호출 한 코드함수에서 문자열 반환 .... 제한?

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

두 번째 줄에는 한 줄 아래에 오류가 있습니다. 자, 내가 궁금해하는 것은 둘 사이의 차이점은 무엇입니까? 나는 두 문자 배열에 동일한 인수를 입력 한 것처럼 보입니다. 배열을위한 malloc 공간이 없었기 때문입니까?

+0

문자열에있는 모든 공백을 원합니까? –

답변

9

C 및 C++ 그런 식 멀티 라인 리터럴을 지원하지 않지만, 당신이 사용할 수 있습니다

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

노트 추가 따옴표를!

+0

추가 할 사항 : 전 처리기가 인접한 문자열 리터럴을 하나로 연결하기 때문에 작동합니다. (인접한 공백을 무시한 인접성). – GManNickG

+0

아하네. 그래서 C++에 특정한 것입니다. 고맙습니다! – PresidentRFresh

+0

@PresidentRFresh : C에서 유효합니다. 대답을 명확히했습니다. –

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

참고을 연결한다는 사실을 이용하여 여러 줄의 문자열을 쓸 수 있습니다 : 마지막 행을 제외하고는 세미콜론이 없습니다.

+0

감사합니다. 나는 이것에 대해 전혀 몰랐습니다. – PresidentRFresh