Должно быть легко связать любую библиотеку C с C ++ в целом, а не только со стандартными заголовками.
Обратите внимание, что вам, возможно, придется пройти через man, чтобы выяснить, какая версия какого Unix был введен в метод или является конкретным расширением, и решить для себя, является ли эта историческая начальная точка приемлемой для вас. Но это правда, если вы написали программу на C вместо C ++.
Заголовки псевдонимов C ++ включают большинство, но не все функциональные возможности заголовков C, но иногда вы можете найти единственный способ получить функцию - напрямую включить заголовок C. С другой стороны, вам нужно спросить себя, почему они решили не включать этот метод, обычно потому, что он устарел, опасен или нестандартен.
Итак, как это работает, так это то, что функции C, включая функции библиотеки C, вводятся с ключевым словом extern "C"
.
Когда вы #include заголовочные файлы C, они обычно содержат некоторый код, такой как:
/* C++ needs to know that types and declarations are C, not C++. */
#ifdef __cplusplus
# define __BEGIN_DECLS extern "C" {
# define __END_DECLS }
#else
# define __BEGIN_DECLS
# define __END_DECLS
#endif
__BEGIN_DECLS
... который представляет раздел функций интерфейса C.
Если вам нужно было включить действительно старую библиотеку C, которая этого не делала, тогда вы можете легко добавить extern "C"
вокруг #include:
extern "C" {
#include "ancientinterface.h"
};
Вы также можете написать свои собственные методы, совместимые с интерфейсом «C».