C로 작성된 일부 코드 위에 (내 첫 번째) C++ 클래스를 작성하고 있지만 extern 블록에서 C 함수를 선언하여 컴파일하는 C++ 만 얻을 수 있습니다. 내 프로젝트는 자동 도구를 사용합니다. 이 프로세스를 자동화 할 수있는 방법이 있나요? 그래서 두 개의 헤더 파일을 유지할 필요가 없습니까?autotools를 사용하여 C++에서 C 코드 사용
//Wrapper.h
#ifdef __cplusplus
extern "C"
{
#include "Actual.h"
}
#else
#include "Actual.h"
#endif
//Use.cpp
#include "Wrapper.h"
int main()
{
return 0;
}
//Use.c
#include "Wrapper.h"
/*or #include "Actual.h" */
int main()
{
return 0;
}
감사합니다. 매우 감사. – drkatz
이것은 확실히 작동하지만 아래의 훨씬 더 높은 등급의 대답이 더 좋습니다 - 실제 헤더 파일의 전 처리기를 사용하여 'extern "C"'함수를 선언하십시오. 그렇게하면 C 및 C++에서 헤더를 동일한 방식으로 포함 할 수 있으므로 추가 "래퍼"헤더에 대해 걱정할 필요가 없습니다. –
참이지만 실제 헤더를 수정할 수없는 경우에는 어떻게해야합니까? 소스가 유지 관리되지 않는 제 3 자/다른 프로젝트에서 얻은 것이라면 어떻게 될까요? –