2013-01-20 3 views
0

내가 C99에서 잘 컴파일 간단한 C 프로그램이 초기화 배열에 대해 불평하지만, ANSI 아래는 불평 :ANSI C는

기분을 상하게하는 라인이 초기화 주위

없는 괄호 :

int myarr[3][3]={0}; 

왜 ANSI C는 불평하고 있습니까? 나는 1 개 개의 게시물이가

+0

다른 중괄호 세트를 추가하는 것이 왜 직관적입니까? 그것의 2 차원 배열, 차원 당 중괄호 중 하나 세트? ... – ApproachingDarknessFish

답변

3

다차원 배열을 초기화하려면 엄격하게 (ANSI C에서) 중괄호를 추가해야합니다. 예를 들어 각 요소를 특정 값으로 초기화하면 다음을 수행합니다.

int myarr[3][3] = {{1,2,3},{4,5,6},{7,8,9}}; 
+1

C를 추가하는 것이 더 좋을 수도 있지만 C에서는 내부 중괄호를 여기에 추가 할 필요가 없습니다. C99의 6.7.8p26을 참조하십시오. – ouah

3
int myarr[3][3]={0}; 

(이 중요한 경우에 나는에 CentOS에서 컴파일거야)

... (가) {0}하지만 나에게 아무 의미 주위} {추가 추가 할 말을 보았다 완벽하게 유효한 C 인 경우 경고는이 경우 컴파일러에서 나타내는 것입니다.

당신이 원하는 경우

은 당신이 할 수있는 경고를 없애 : 또한

int myarr[3][3]={{0}}; 

또는 -Wall 옵션 gcc를 사용하는 경우 -Wno-missing-braces를 추가합니다.

+0

괜찮아. 선생님은 다른 컴파일러 옵션을 필요로하지 않으므로 여분의 중괄호를 추가해야합니다. – TSG