C++은 C언어를 얼마나 포함하고 있나요?

geneven의 이미지

제목이 좀 이상한거 같은데 가령 C언어로 작성한 함수를 C++에서 100% 다 사용가능한가요?
리눅스에서 C로 시스템 프로그래밍은 해봤는데 C++에서 할경우에도 같은 함수를 사용할 수 있는건지 궁금합니다.
REENTRANT옵션같은거는 어떻게 처리되는건지..

cppig1995의 이미지

C++0x에 포함될 TR1은 C99의 표준 라이브러리 전체를 포함합니다만,
문법상 (int *a = ① malloc(n * sizeof(int));
같은 문장에서 ①의 위치에 (int *)가 와야만 한다던지) C++은 좀 차이가 나지요.
system-dependent한 경우, 거의 그대로 적용할 수 있지 않을까 싶습니다.
--
임수서룬뫼 윤희수 {cppig1995/돼지군}

Real programmers /* don't */ comment their code.
If it was hard to write, it should be /* hard to */ read.

neogeo의 이미지

100%라고 할 수는 없습니다. C99 이후 많은게 달라졌지요.

C99 표준의 동적 array 라던가 하는 부분이 문제가 될 수 있습니다.

그 밖에 전통적인 문제인

function call 의 방식이라던가, lib 작성시 function 이름의 mangling 문제라던가,

깊게 따지고 들면 호환이 안되는 부분이 상당수 존재하게 됩니다.

따라서 대부분의 C++ 컴파일러는 extern "C" { ~~~ } 라는 것을 이용하여 C 표준에 맞는

행동을 어느정도 취할 수 있는 여지를 가지고 있습니다.

이를 이용하면 system 에 특화된 문제가 아니고선 어지간한 충돌은 다 해결할 수 있습니다.

Neogeo - Future is Now.

Neogeo - Future is Now.

hongminhee의 이미지

C는 C++의 부분집합(subset)이 아닙니다.