Why do we need extern "C"{ #include <foo.h> } in C++?을 읽은 후에 나는 extern "C"블록 내에 헤더를 포함하여 결론을 내렸다.혼합 C/C++ 헤더에 다른 혼합 헤더가 포함될 수 있습니까?
하지만이 별자리 문제로 실행 :
#ifdef __cplusplus
extern "C" {
#endif
#include "mixedstuff.h"
#ifdef __cplusplus
}
#endif
mixedstuff.h :
사람이 볼 수 있듯이, 내가cppstuff.h
으로 돌아가 셨습니다
#ifdef __cplusplus
extern "C" {
#endif
#include "cstuff.h"
#ifdef __cplusplus
}
#include "cppstuff.h"
#endif
하면 extern "C"
내에서 C++ 컴파일러가 포함되지 블록. 많은 문이 C- 링크로는 불가능하기 때문에 많은 오류가 발생했습니다.
분명 솔루션은 extern "C"
블록 외부의 #include mixedstuff.h
입니다. 그러나 이것은 내가 각 헤더를보고 그것이 평범한 지 알기를 요구한다. C, C++ 또는 혼합.
여기에서 extern "C"에 헤더를 포함하는 대신 헤더를 C++에서 인식하도록 권장합니다. 내가 맞습니까, 아니면 더 좋은 방법이 있습니까?
__cplusplus의 첫 번째 사용이 불필요 : –
그게 제가 "명백한 해결책"을 의미하는 것입니다. 나는 그러한 상황에 대한 최선의 관행을 요구하려고 노력했다. – Sascha