W wyniku mojej previousquestions zadałem sobie pytanie: Czy w ogóle jest użyteczne skonfigurowanie interfejsu C++ dla systemu wtyczek? Poniższe punkty są mówiąc przeciwko niemu:Dlaczego powinienem ustawić interfejs wtyczki w C++ zamiast c
- Brak wspólnego ABI pomiędzy różnymi kompilatory i ich wersjach, nie wspólny układ obiektów w pamięci
- Brak bezpośredniego eksportu klasy. Musisz eksportować fabryki i destruktory. Pojawiają się problemy, jeśli obiekty są trzymane przez inne obiekty, które tylko są nimi, na przykład inteligentne wskaźniki.
- Różne implementacje STL, nie można przekazać
std::list<T>
do wtyczki - różnych wersjach używanych bibliotek takich jak Boost,
Jeśli powstrzymać się do pozostałych części C++ języku prawie koniec z "podzbiorem C". Czy są jakieś punkty mówiące o używaniu C++? W jaki sposób Qt-Toolkit rozwiązuje wymienione problemy?
Uwaga: mam na myśli głównie system Linux. Mimo to interesuję się rozwiązaniami na innych platformach.
Dodatkowe pytanie: Jakie problemy występują przy użyciu interfejsu C? Układ pamięci struct
s? Które części językowe C należy unikać?
Standard C również nie określa ABI. W rzeczywistości wszystkie problemy, na które się skarżysz, mogą dotyczyć C tak samo, jak C++. –
Tak, warto zauważyć, że standard jest ogólnie ustalany przez system operacyjny i może, ale nie musi mieć nic wspólnego z tym, co robią jego kompilatory. W systemie Windows jest to stdcall. –
@Neil. Standard C ma dobrze zdefiniowaną ABI. Właśnie dlatego C jest GLUE między tak wieloma innymi językami. –