Только те объявления функций и объектов C, к которым получают доступ компоненты C ++, должны быть объявлены с помощью связи C, и только - компоненты C ++. Предположительно, ваша новая библиотека C ++ получает очень мало доступа, если вообще что-то, из существующего кода C, поэтому основной задачей будет то, к чему обращается (напрямую) main()
. Эти функции должны быть объявлены (main
) со связью C. Если это окажется значительным количеством вещей, то вы можете рассмотреть возможность рефакторинга, чтобы сделать его меньше.
Более того, нет, вам не нужно изменять существующие заголовочные файлы. Файлы C ++, которые ссылаются на вашу библиотеку C и, следовательно, включают в себя некоторые из ее заголовков, могут обернуть соответствующие операторы #include
в блок extern "C"
для решения проблемы.