Ссылка на переменную в библиотеке, которая объявлена ​​в зависимом приложении

Я не могу вспомнить, какие здесь правила, в моем проекте приложения в настоящее время я объявляю глобальную переменную в stdafx.h / cpp:

extern const char *LOGFILE = "test.log"

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

0

Решение

Правила таковы: extern переменная может быть объявленный (нет =...) столько единиц компиляции, сколько вам нужно (и даже более одного раза в любом из них). Это должно быть определенный=...) ровно один раз во всей программе.

Так что если вы хотите написать библиотеку, которая использует эту переменную, вы можете безопасно объявлять это в любом модуле компиляции библиотеки, которая нуждается в этом: вы сможете скомпилировать объекты библиотеки и сгенерировать саму библиотеку без ошибок. В библиотеке будет неразрешенный символ, который будет разрешен во время компоновки при создании исполняемого файла во время загрузки, если это общая библиотека.

Вы можете написать extern const char *LOGFILE; (NO = ... часть) во всех источниках или вставьте в .h и включите его.

4

Другие решения


По вопросам рекламы [email protected]