Как бороться с конфликтами символов между статически связанными библиотеками?

Одно из самых важных правил и передовых практик при написании библиотеки - это размещение всех символов библиотека в конкретное пространство имен библиотеки. C ++ упрощает эту задачу благодаря ключевому слову пространства имен . В C обычный подход состоит в том, чтобы префикс идентификаторов с помощью некоторого префикса конкретной библиотеки.

Правила стандарта C налагают некоторые ограничения на них (для безопасной компиляции): компилятор C может смотреть только на первый 8 символов идентификатора, поэтому foobar2k_eggs и foobar2k_spam могут интерпретироваться как одно и то же идентификаторы допустимы - однако каждый современный компилятор допускает произвольные длинные идентификаторы, поэтому в наше время (21 век), нам не следует об этом беспокоиться.

Но что, если вы столкнетесь с некоторыми библиотеками, в которых вы не можете изменить имена / идентификаторы символов? Может у тебя есть только статический двоичный файл и заголовки либо не хотят, либо им не разрешено настраивать и перекомпилировать самостоятельно.

79
задан JBL 30 May 2017 в 09:08
поделиться