코드를 설명합니다 다음과 같은 상황은 내가가 발생했습니다네임 스페이스와 C++/C 혼합 헤더
#ifdef __cplusplus
namespace ns
{
class pod
{
const short foo;
const char bar;
public:
pod(short f,char b):foo(f),bar(b){}
char foobar();
};
}
#else
typedef struct pod pod;
#endif
#ifdef __cplusplus
extern "C"{
#endif
extern pod* pod_new(short f, char b);//BANG!!!
extern char pod_foobar(pod* p); //BANG!!!
#ifdef __cplusplus
}
#endif
내가 네임 스페이스 ns
내부의 C 연동 기능을 넣을 수 없습니다, 또는 C 클라이언트가 자신의 정의를 찾을 수 없습니다 . 네임 스페이스에서 꺼내면 C++ 정의도 컴파일되지 않습니다. 왜냐하면 C++ FAQ Lite에서 배웠던 pod
솔루션 때문입니다. 이것은 단지 전 처리기 트릭입니다. 그리고 슬프게도,이 속임수는 네임 스페이스를 다룰 수 없었습니다.
은 내가 무엇을 해야하는 거? 모든 유형 안전을 제거하고 pod*
을 void*
으로 대체해야합니까? 아니면이 상황에 대한 더 좋은 해결책이 있습니까? 조언? 부디!
을 나는이 다운 요리 예입니다 생각하지만'typedef' '; '를 놓친다 –