|
제가 우연히 VC++(6.0)에서 간단한 코드를 작성해서 돌리는 과정에서 예전에는 겪지 못했던 내용이라 궁금해서 문의 드립니다.
코드 >
#include <stdio.h>
int main(){
printf("acedon");
return 0;
}
이런 코드가 있습니다.
여기서 #include 부분을 주석처리 하고 실행해보니 원래는 헤더파일을 생략했기에 오류가 날것이라고 생각했습니다. 그런데 돌려보니 버젓이 Warning만 뜨고 작동이 되는겁니다.
위 파일은 test.c 파일일 경우였구요,
test.cpp 파일로 만들어 똑같이 한 후 #include 부분을 주석처리 하니 이번에는 오류처리로 잘 됐습니다.
결론은 .c일 경우는 생략해도 컴파일 워닝만 뜰뿐 잘 실행됩니다. .cpp일 경우는 오류로 실행이 되지 않구요
.c일 경우 stdio.h, string.h 정도는 생략해도 그냥 함수를 쓸수 있는듯 보이구요, 다른 함수들 예로 math.h 에 있는 pow()함수를 써봤더니 워닝뜨는건 똑같지만 값은 나오지 않았습니다.
.c로 만들경우 컴파일러에서 생략해도 default로 stdio.h, string.h 정도는 되는것 같은데, 이게 맞나요?
.cpp 일경우 보안(?) 경고수준이 높아져서 생략하면 오류나게 만들어 놓은걸로 생각해도 될까요?
VC++(6.0)에서 말고 TC++에서 해봐도 역시 .c와 .cpp의 파일 차이가 분명하더군요,
이부분을 어떻게 이해해야 할까요?
컴파일러의 역할이 그런건가요? 궁금하네요 ^^
고수님들의 좋은 답변 부탁 드립니다.!
|