Software Workshop

코드

typedef struct table_s {
    struct table_s *next;
    int content;
    int is_header = -1;
} table_t;

is_header = -1에서 에러 발생

해결책

원칙적으로 구조체 선언 부분에서는 변수를 초기화할 수 없음

실제 구조체 변수가 생성(instantiation)된 이후에 초기화해야 함

#include <stdio.h>
#include <string.h>
  
typedef struct table_s {
    struct table_s *next;
    int content;
    int is_header;
} table_t;
  
void print_table(table_t t)
{
    printf("%p %d %d\n", t.next, t.content, t.is_header);
}
  
int main()
{
    table_t t1 = {.content = 0,.is_header = -1 };
  
    table_t t2 = { content: 0, is_header:-1 };
  
    table_t t3;
    memset((void *) &t3, 0, sizeof(t3));
  
    table_t t4 = { 0 };
  
    print_table(t1);
    print_table(t2);
    print_table(t3);
    print_table(t4);
  
    return 0;
}
(nil) 0 -1
(nil) 0 -1
(nil) 0 0
(nil) 0 0