gcc는 인수 없이 정의된 함수에 인수를 전달할 수 있도록 하는 이유는 무엇입니까? 왜 이 코드가 컴파일되는지 모르겠어요. #include void foo() { printf("Hello\n"); } int main() { const char *str = "bar"; foo(str); return 0; } gcc는 foo()에 너무 많은 인수를 전달하고 있다는 경고도 하지 않습니다.이것은 예상된 동작입니까?C에서 빈 파라미터 리스트로 선언된 함수는 호출 시 임의의 수의 인수를 받아들입니다.이러한 인수는 통상적인 산술 프로모션에 따릅니다.제공된 인수가 함수의 정의에 적합한지 확인하는 것은 호출자의 책임입니다. 인수를 하려면 0으로 선언해야 .void foo(void);. 이는 역사적 이유로, 원래 C 기능..