C가 빈 선언을 허용하는 이유는 무엇입니까? 둘 다 문법 수준에서 명시 적으로 허용되며 컴파일 된 경우에만 경고를 생성합니다.빈 선언이 허용되는 이유는 무엇입니까?
C 표준의 부록 A에서 생산 declaration
은, 문법 수준에서 허용된다 (내게로 EBNF
으로 전환)
declaration
= declaration_specifiers , ";"
| declaration_specifiers , init_declarator_list , ";"
| static_assert_declaration
;
유용하기 때문에? 'struct tagS {int x; };'공식적으로 빈 선언? –
어떤 표준 버전을보고 계십니까? C11은 두 번째 및 세 번째 옵션 만 표시합니다. – dbush
@BenVoigt 맞다! 예, 공식적으로 빈 선언입니다. 구조체는 declaration_specifiers => type_specifier => struct_or_union 지정자로만 처리됩니다. – Leandros