C++ ile hangi prototiplerin dahil edilmesi gerektiğini belirten satır içi bir yol istiyorum. Örneğin: c ve C++ prototiplerini karıştırmanın bir yolu var mı?
void ArrayList_insert(ArrayList *arrlst, void *data, int i); IS_CPP void ArrayList_insert(ArrayList *arrlst, char *data, int i); IS_CPP void ArrayList_insert(ArrayList *arrlst, Buffer *data, int i);şu anda yapıyorum:
#ifdef __cplusplus extern "C" { #endif ....C HEADERS.. #ifdef __cplusplus } ....C++ HEADERS... #endif
ama aynı işlevin aşırı yükler farklı yerlerde olduğu için onun çok sakıncalı. Sadece 2 farklı başlık dosyası alabilirim, ama bu da bir acı. Bu nedenle, yukarıda önerdiğim gibi bir satır içi çözüm arıyorum. Bunu yapmanın bir yolu bilen var mı? Eğer olarak derlemek eğer üçünü alırsınız, sen C++ olarak başlık derlemek Şimdi eğer
#ifdef __cplusplus
#define IS_CPP(x) x
#else
#define IS_CPP(x)
#endif
void ArrayList_insert(ArrayList *arrlst, void *data, int i);
IS_CPP(void ArrayList_insert(ArrayList *arrlst, char *data, int i));
IS_CPP(void ArrayList_insert(ArrayList *arrlst, Buffer *data, int i));
ama:
bu, c ile derlendiğinde bir hataya neden olur çünkü c işlevi aşırı yüklenmeyi desteklemez. – chacham15
chacham15 - Haklısınız. Cevabı ben çözdüm, çünkü sorumu yanlış anladım. –
Artık @Carl Norum'un cevabıyla eşdeğer. Carl'ın cevabı hariç, – chacham15