Что делать в C ++, когда две сторонние библиотеки Linux используют одинаковые имена в своих перечислениях - PullRequest
2 голосов
/ 24 декабря 2010

Я работаю в Linux и использую сторонний C и кучу стороннего кода C ++, и я пишу свой код C ++, и я не могу скомпилировать, потому что компилятор жалуется два раза так:

ошибка: конфликтующие декалирации XXXX (имя моей переменной) ошибка: XXXX имеет предыдущий декальтраин

XXXX - член перечисления в двух разных наборах перечисления в двух библиотеках сторонних библиотек.

Есть несколько случаев, в которых есть похожая проблема.

1 Ответ

6 голосов
/ 24 декабря 2010

Вы должны включить заголовок библиотеки C в отдельное пространство имен.

namespace foo {
    #include <foo.h>
}

Таким образом, поскольку внешний код C не использует пространства имен, программа все равно будет правильно связываться, но имена (на уровне C ++) больше не будут конфликтовать с другими вашими библиотеками C ++.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...