Mam kilka plików zapisanych w C, i chcę, aby były zgodne z C++, więc dla moich nagłówków C używam;C++: funkcje zewnętrzne i inline
#ifdef __cplusplus
extern "C" {
#endif
na początku pliku i oczywiście
#ifdef __cplusplus
}
#endif
... na końcu. Ale wydaje się, że stwarza problemy ze słowem kluczowym "inline". Moim rozwiązaniem jest po prostu usunięcie inline słowa kluczowego dla C++, ale myślę, że może to mieć zły wpływ na programy w C++ (te funkcje są nazywane czasem miliardami).
Czy istnieje lepsze rozwiązanie? Oczekuje się
Pojawi się wiele błędów definicji w całym miejscu. Dodatkowo logika jest zacofana: C++ obsługuje słowo kluczowe inline i C89/C90, które tego nie robi. –
Wygląda na to, że działa. W każdym razie, aby być uczciwym, wszystkie kompilatory C i C++, którymi jestem zainteresowany, obsługują słowo kluczowe "inline". Myślę, że problem polega na tym, że w C++ muszę dodać "extern" i powoduje to konflikty z wbudowanym słowem kluczowym. – Suugaku
W standardzie C++ 03 funkcje 'inline' są automatycznie" zewnętrzne ". Czy działa bez 'extern'? –