С++: функции Extern C внутри пространства имен - программирование
Подтвердить что ты не робот

С++: функции Extern C внутри пространства имен

Мне нужно связать две библиотеки, скажем A и B. Некоторые из файлов являются общими в обеих библиотеках. Итак, я объявляю функции в библиотеке A внутри пространства имен, например abc. Итак, в и B функция func выглядит следующим образом:

[ in A]

    namespace abc {
    extern "C" void func();
    }


[in B]

    extern "C" void func();

При создании проекта компилятор выдает ссылки на ошибки, говорящие о нескольких определениях функции func. Не является ли функция func в внутри пространства имен или существует некоторая проблема с внешними "C" функциями. Если есть, то как я могу их отличить?

4b9b3361

Ответ 1

Когда вы используете Extern "C", вы отключите управление именами, чтобы потерять информацию о пространстве имен, поскольку C не имеет такой концепции. Это приводит к дублированию определения.