Я использую библиотеку C (libgretl) из C ++, и некоторые ее функции конфликтуют с моим кодом, поэтому я хотел обернуть ее в пространство имен, например:
namespace libgretl {
extern "C" {
#include <gretl/libgretl.h>
}}
Однако это не компилируется, я получаю «неопределенные» ошибки из файлов gcc (при использовании mingw32 с gcc 4.5.2 в Windows). Первые ошибки происходят из следующего блока кода файла c ++ / cstddef:
_GLIBCXX_BEGIN_NAMESPACE(std)
using ::ptrdiff_t;
using ::size_t;
_GLIBCXX_END_NAMESPACE
, где макросы расширяются соответственно до пространства имен std {
и }
. После этого появляются другие ошибки.
Отсутствие директивы extern «C»
не помогает. Использование анонимного пространства имен уменьшает количество ошибок, но оно все равно не компилируется.
Поэтому у меня вопрос, есть ли способ включить такую библиотеку C и разместить ее функции в пространстве имен без изменения gcc или исходные файлы библиотеки?
Спасибо.
Михал