Ссылочные статические переменные const, объявленные в пространстве имен
Я уточнил документацию по документообороту для моих модулей и натолкнулся на странную проблему. При обращении к переменным, расположенным в пространстве имен, автоподключение не работает. Вот фрагмент:
namespace isa {
const double H_max= 10000; //!< @brief Maximum altitude in meters.
//! @brief Calculate air densitity at altitude \a H.
//! @throw argument_exception when \a H exceeds ::H_max.
double rho(double H);
} // namespace isa
Я ожидаю, что doxygen поместит ссылку на H_max в описании исключения функции rho(double), чтобы направить читателя к константе. Но это происходит только в том случае, если я оставляю пространство имен, в противном случае автоматическое связывание не работает.
Что я делаю неправильно?
Заранее спасибо.
1 ответ
Итак, проблема здесь не в неправильном поведении doxygen, а в неправильном понимании того, как префикс глобального пространства имен ::
работает.
::H_max
идентифицирует символ, определенный в глобальном пространстве имен, то есть вне любого пространства имен. Боюсь - поправьте меня, если я ошибаюсь - что вы ожидаете, что он будет вести себя как родительский каталог ..
идентификатор.
Когда doxygen обрабатывает предоставленный вами фрагмент кода, он не связывается ::H_max
в описании исключения, потому что он не может найти H_max
переменная в глобальном пространстве имен. Если вы удалите двойной префикс двоеточия, он должен предоставить ссылку на isa::H_max
,