2012-06-08 2 views
1

아래 코드가 있습니다. "경고 : 초기화 할 때 주위에 괄호가 없습니다. [-Wmissing-braces]"경고가 나타납니다.struct에서 char 초기화

struct routing { 
    int hop_distance; 
    char timeinfo[13]; 
    char sender_ID[16]; 
    char gateway[16]; 
}; 

struct routing user_list[40] = { [0]={0,0,0,0}}; 

문자 초기화 때문에 경고가 표시됩니다. 어떻게 초기화해야합니까?

struct routing user_list[40] = { [0]={0,{0},{0},{0}}}; 

또는

struct routing user_list[40] = { [0]={0,'\0','\0','\0'}}; 

또는 다른 방법으로

?

+0

memset 함수 (USER_LIST, 0, 40 * sizeof 연산자 (라우팅)); – JMC

+0

'struct routing user_list [40] = {{0}};'으로 짧게하는 것에주의하십시오. 명시 적 initialiser가없는 모든 필드와 배열 요소는 정적 객체가 될 수있는 적절한 0 값으로 초기화됩니다. –

답변

2

배열의 요소 0을 초기화하고 있습니다. 그러므로 :

struct routing user_list[40] = { [0]={...} }; 

지금까지 당신은 그것을 올바르게했습니다. 이 요소에서는 네 명의 멤버를 초기화합니다.

struct routing user_list[40] = { [0]={..., ..., ..., ...} }; 

또한 좋습니다.

소자 (1)가 그들에게 어레이를 초기화 같은 방법으로 초기화 할 수 있도록하면 성분 2, 3 등 0

같은 번호를 초기화하고 4 char 배열되어 그 intchar. {0}, {'\0'} 또는 "" 그들은 모든 작업 :

struct routing user_list[40] = { [0]={0, {0}, {'\0'}, ""} }; 

참고 위의 모든 세 가지 방법을 사용할 수 있습니다 보여주는 예입니다. 실제로는 한 가지 방법을 사용하여 세 가지 방법 모두에서 사용합니다.

경고를받은 이유는 대신 0으로 배열을 초기화하려고하기 때문입니다.

0

당신은 중괄호와 배열을 둘러싸고 있습니다

struct routing user_list[40] = { 
    [0] = { 0, { 0 }, { 0 }, { 0 } } 
};