내가 C99에서 잘 컴파일 간단한 C 프로그램이 초기화 배열에 대해 불평하지만, ANSI 아래는 불평 :ANSI C는
기분을 상하게하는 라인이 초기화 주위
없는 괄호 :
를int myarr[3][3]={0};
왜 ANSI C는 불평하고 있습니까? 나는 1 개 개의 게시물이가
내가 C99에서 잘 컴파일 간단한 C 프로그램이 초기화 배열에 대해 불평하지만, ANSI 아래는 불평 :ANSI C는
기분을 상하게하는 라인이 초기화 주위
없는 괄호 :
를int myarr[3][3]={0};
왜 ANSI C는 불평하고 있습니까? 나는 1 개 개의 게시물이가
다차원 배열을 초기화하려면 엄격하게 (ANSI C에서) 중괄호를 추가해야합니다. 예를 들어 각 요소를 특정 값으로 초기화하면 다음을 수행합니다.
int myarr[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
C를 추가하는 것이 더 좋을 수도 있지만 C에서는 내부 중괄호를 여기에 추가 할 필요가 없습니다. C99의 6.7.8p26을 참조하십시오. – ouah
int myarr[3][3]={0};
(이 중요한 경우에 나는에 CentOS에서 컴파일거야)
... (가) {0}하지만 나에게 아무 의미 주위} {추가 추가 할 말을 보았다 완벽하게 유효한 C 인 경우 경고는이 경우 컴파일러에서 나타내는 것입니다.당신이 원하는 경우
은 당신이 할 수있는 경고를 없애 : 또한int myarr[3][3]={{0}};
또는 -Wall
옵션 gcc
를 사용하는 경우 -Wno-missing-braces
를 추가합니다.
괜찮아. 선생님은 다른 컴파일러 옵션을 필요로하지 않으므로 여분의 중괄호를 추가해야합니다. – TSG
다른 중괄호 세트를 추가하는 것이 왜 직관적입니까? 그것의 2 차원 배열, 차원 당 중괄호 중 하나 세트? ... – ApproachingDarknessFish