|
컴파일러에 따라 다르겠지만, 일반적으로 C++은 C의 상위개념으로 쓰이고, 컴파일러 역시 C보다는 상당히 엄격한 오류체크를 하게 됩니다. 특히 type conversion의 경우, 보다 엄격하게 검사하고요. vc의 경우도 이를 따른다고 알고 있습니다.
컴파일러에 따라 다를 수 있으나, 일반적으로는 C와 C++의 구분은 파일 확장자로 하고 있고요.
컴파일러 내부적으로 C++을 컴파일하는 방법은
1. C++ 규칙에 따른 구문을 분석
2. C++ -> C로 전환
3. C로 전환된 파일을 C컴파일러에 의해 기계어로 변환 (obj생성, 목적코드)
형태로 된다고 알고 있습니다.
과거 컴파일러들은 대부분 이 형태로 처리하였으나, 요즈음은 어떤 지, 모르겠네요. ^^;;;
beavis 님이 쓰신 글 :
: 안녕하세요 여러분
: 사실 이건 mfc에서 난 에러이긴 한데
: 제가 딱히 mfc에 대해 물어볼 곳이 없어서리 질문을 올립니다.
:
: 누가 짜 놓았던 소스를 받아서 다시 어떠한 모줄을 만들어야
: 해서 받은 소스를 분석하게 되었습니다.
: 대충 분석이 끝나서
: 제가 새로 짤 부분은 새로 짜고 기존의 함수들은 상당히
: 쓸만한 것들도 있고 해서 가지고 가기로 했습니다.
: 그래서 새 프로젝트 만들고
: 제가 만든 로직을 넣고
: 전에 있던 함수들을 새로 cpp파일 생성해서 붙여 넣고
: 뭐 위와 같은 과정을 거쳐서 컴파일을 하니
: 에러가 주루룩 떳습니다.
:
: 그 내용은 어떤 타입을 어떤 타입으로 캐스팅할 수 없다는 것이었고
: 발생장소는 가져온 함수들이었습니다.
: 받은 소스가 완전히 컴파일 가능한 형태였기 때문에
: 저는 두 소스의 차이를 뒤져보다보니
: 원 소스는 확장자가 ".c"이고 제가 바꾼 것은".cpp" 라는 것을
: 제외하고는 모든 것이 동일했습니다.
:
: 그래서 제가 편집한 cpp파일의 확장자를 ".c"로 바꾸어
: 주니 정상적으로 컴파일이 되더군요.
:
: 그렇다면 cpp파일과 c파일은 결국 컴파일 방식이 틀리다는
: (파일 내용과 관계없이)말이 되는데요...
:
: 양자간의 차이점을 어떻게 이해해야 하는 지 잘 감이 안옵니다.
: 제가 허덥이라 그런지는 모르겠는데요
: 혹시 아시는 분은 조언을 부탁드리겠습니다.
:
:
|