I가 다음 두 구조체 :초기화 중첩 된 구조체 - 가장 좋은 방법
typedef struct foo__
{
double *cliendata;
size_t len;
size_t f1;
size_t f2;
}Foo;
typedef struct foobar__
Foo a, b, c;
char[SOME_DIM] name;
size_t fb1;
size_t fb2;
char[SOME_DIM] address;
Foo d;
unsigned char id;
}FooBar;
나는, 나는 그것이 모든 필드 멤버를 초기화하기 때문에 (더 "올바른"라고 생각하기 때문에 EMPTY_FOOBAR2를 사용하는 것을 선호 플러스 (나는?
#define EMPTY_FOO { NULL, 0, 0, 0}
#define EMPTY_STRING {""}
#define EMPTY_FOOBAR1 { {0},{0},{0}, {""}, 0, 0, {""}, {0}, 0}
#define EMPTY_FOOBAR2 { EMPTY_FOO, EMPTY_FOO, EMPTY_FOO, \
EMPTY_STRING, 0, 0, EMPTY_STRING,\
EMPTY_FOO, 0}
아마 단지 문법 설탕. 그것은 분명 구조체는 foobar 둥지 구조체 푸뿐만 아니라 일부 문자열 있음을 만들면서 그것은, 코드 가독성을 AIDS) 생각하지만, "모범 사례"로 간주되는
두 번째'struct '는 불가능합니다. 구조체 자체의 인스턴스를 포함 할 수 없습니다. 다른 'FOO'또는 포인터를 사용 하시겠습니까? –
@ ErnestFriedman-Hill 글쎄. 나는 그 오타를 바로 잡을 것이다. –
코드가 여전히 C가 아니며'[]'이 잘못된 위치에 있습니다. –