Я изменяю большой проект C ++, который определяет в одном из своих главных заголовков перечисление FooBar.Это перечисление включается везде и, к сожалению, не является пространством имен.
Из этого проекта я хотел бы использовать библиотеку C, которая, к сожалению, также определяет перечисление FooBar в том же глобальном пространстве имен.
Я не могу изменить реализацию библиотеки, и трудно переименовать или разместить пространство имен в проекте C ++, потому что он используется повсеместно.
Поэтому в идеале я бы добавил пространство имен для всех символов, приходящих из Cбиблиотека.Я пробовал что-то вроде:
namespace c_library_foo {
#include <c_library_foo.h>
}
...
c_library_foo::c_library_function()
...
, и это прекрасно работает в том, что касается компиляции, но, конечно, компоновщик тогда не может разрешить символы из библиотеки, поскольку пространство имен отсутствует в реализации.