Я работаю над добавлением функции, написанной на C ++, в большую программу, написанную на C.
Я пытался окружить все коды, включенные в программу C, во внешние блоки "C", но когдаЯ компилирую с g ++, я все еще получаю ошибки, исходящие от компилятора, пытающегося скомпилировать C как C ++.Я добавил блоки extern "C" ко всем заголовкам и файлам .c следующим образом:
#ifdef __cplusplus
extern "C"
{
#endif
//C code here
#ifdef __cplusplus
}
#endif
Ошибки выглядят так:
. / Sortcodes / oci.c: В функции 'int GetSpecList (ClientData, Tcl_Interp *, int, Tcl_Obj * const *)': ./sortcodes/oci.c:188:25: ошибка: init не называет тип статическим init = TRUE;
Эти ошибки не возникают, если я удаляю свой вызов функции C ++ и просто компилирую программу C с помощью gcc.
Если удалить внешние блоки "C" и скомпилировать с использованием параметров
gcc -std = c ++ 0x -lstdc ++ -std = c ++ 11
Я получаю ошибки, подобные приведенной ниже, где флаги C ++ явно игнорировались
. / Event_Reader.cpp: 9: 20: фатальная ошибка: iostream: такого файла или каталога нет #include
Есть ли какие-либо варианты, которые я пропускаю или неправильно истолковываю?Любой совет будет оценен.