제목에서 알 수 있듯이이 오류의 원인을 알고 있지만 컴파일러가이 상황에서 왜 그것을 제공하는지 알고 싶습니다.C에서 정의되기 전에 함수를 사용할 때 암시 적으로 선언 할 때 컴파일러에서 알아낼 수없는 이유는 무엇입니까?
예 :
main.c를
void test(){
test1();
}
void test1(){
...
}
그것의 선언을 읽기 전에, 나는 명백한 문제를 볼 수 있습니다 TEST1()에 대한 호출에 도달 할 것입니다 컴파일러 같은 암시 적 선언 경고를 줄 것인가 이 (반환 형식을 모르는 등),하지만 왜 컴파일러는 모든 함수 선언을 얻는 간단한 단계를 수행하지 못하고 이러한 오류를 제거하는 코드를 컴파일합니까? 그냥 그렇게하는 것이 단순 해 보이고 나는 다른 언어로 비슷한 경고를 보았다고 생각하지 않습니다.
내가 간과하는이 상황에서이 경고의 특정 목적이 있는지 알 수 있습니까?
내가 생각하기에, 오래 전에 설계된 도구에서 숙취라고 생각하세요! – rolls