Требуется ли extern «C» только в объявлении функции?
Я написал C ++ функцию, которую мне нужно вызывать из C программы. Чтобы сделать его вызываемым из C, я указалextern "C"
на функциидекларация, Затем я скомпилировал код C ++, но компилятор (Dignus Systems / C ++) сгенерировалискаженное имя для функции. Так что, видимо, это не чтило.extern "C"
Чтобы решить эту проблему, я добавилextern "C"
к функцииопределение, После этого компилятор сгенерировал имя функции, которое можно вызвать из C.
Технически,extern "C"
нужно только указать в объявлении функции. Это правильно? (TheC ++ FAQ Lite имеет хороший пример этого.) Вы также должны указать это в определении функции?
Вот'Вот пример, демонстрирующий это:
/* ---------- */
/* "foo.h" */
/* ---------- */
#ifdef __cplusplus
extern "C" {
#endif
/* Function declaration */
void foo(int);
#ifdef __cplusplus
}
#endif
/* ---------- */
/* "foo.cpp" */
/* ---------- */
#include "foo.h"
/* Function definition */
extern "C" //