Ссылочные статические переменные 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,

Другие вопросы по тегам