Вы защищаете заголовки C в своем коде C ++ с помощью
extern "C" {
// your includes here
}
, и это должно быть все --- g++
должно успешно связывать код как с gcc
, так и с g++
.Трюк extern "C" ...
также используется в системных заголовках C ++ и многих библиотеках, просто посмотрите на заголовки, которые поставляются с вашей установкой g ++ или в некоторых подходящих проектах с открытым исходным кодом.Вот пример Boost :
edd@max:~$ grep 'extern "C"' /usr/include/boost/date_time/*
/usr/include/boost/date_time/filetime_functions.hpp: extern "C" {
/usr/include/boost/date_time/filetime_functions.hpp: } // extern "C"
edd@max:~$
Редактировать: Спасибо Delnan за внимательный комментарий --- это из самого заголовка sqlite3.h:
/*
** Make sure we can call this stuff from C++.
*/
#ifdef __cplusplus
extern "C" {
#endif
, поэтому об этом, конечно, уже позаботились.