Verileri yönetmek için çeşitli sınıflar sağlayan bir C ++ kitaplığım var. Kütüphanenin kaynak koduna sahibim.
Kitaplığın C kodu ve C ++ kodu ile aynı anda kullanılabilmesi için C işlev çağrılarını desteklemek için C ++ API'yi genişletmek istiyorum.
GNU araç zincirini (gcc, glibc vb.) Kullanıyorum, bu nedenle dil ve mimari desteği bir sorun değil.
Bunun teknik olarak mümkün olmamasının herhangi bir nedeni var mı?
Dikkat etmem gereken herhangi bir sorun var mı?
Bununla ilgili kaynaklar, örnek kodlar ve / veya belgeler var mı?
Öğrendiğim diğer bazı şeyler:
- C kodu tarafından kullanılması gereken C ++ başlıklarınızı sarmak için aşağıdakini kullanın.
#ifdef __cplusplus
extern "C" {
#endif
//
// Code goes here ...
//
#ifdef __cplusplus
} // extern "C"
#endif
- "Gerçek" C ++ arayüzlerini, C. tarafından dahil edilmeyen ayrı başlık dosyalarında tutun . PIMPL ilkesini burada düşünün .
#ifndef __cplusplus #error
Malzeme kullanmak, herhangi bir çılgınlığı tespit etmeye yardımcı olur. - C kodundaki adlar olarak C ++ tanımlayıcılarına dikkat edin
- C ve C ++ derleyicileri arasında boyut olarak değişen numaralandırmalar. GNU araç zincirini kullanıyorsanız muhtemelen bir sorun değildir, ancak yine de dikkatli olun.
Yapılar için aşağıdaki formu takip edin, böylece C'nin kafası karışmaz.
typedef struct X { ... } X
Daha sonra C ++ nesnelerinin etrafından geçmek için işaretçiler kullanın, bunların C'de yapı X olarak bildirilmesi gerekir;
Tüm bunlar, C ++ 'da sihirbaz olan bir arkadaşın nezaketidir.