struct
a を C- として前方宣言することは合法ですか?struct
// api.h
#ifdef __cplusplus
extern "C" {
#endif
typedef struct handle_tag handle_t;
handle_t *construct();
void destruct(handle_t *h);
void func(handle_t *h);
#ifdef __cplusplus
}
#endif
その後、それを C++-struct
として、つまり非 POD 型として定義しますか?
// api.cpp
struct handle_tag {
void func();
std::string member;
};
void func(handle_t *h) {
h->func();
}
handle_t
一般的な意図は、C インターフェイスを介して、C++ データ型として内部的に実装された外部からアクセス可能な不透明型を取得することです。