Ссылочные статические переменные const, объявленные в пространстве имен - PullRequest
0 голосов
/ 07 февраля 2011

Я выложил документацию по доксигену для своих модулей и столкнулся со странной проблемой.При обращении к переменным, расположенным в пространстве имен, автоподключение не работает.Вот фрагмент кода:

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 Ответ

1 голос
/ 08 февраля 2011

ОК, поэтому проблема здесь не в неправильном поведении, а в неправильном понимании того, как работает префикс глобального пространства имен ::.

::H_max идентифицирует символ, определенный в глобальном пространстве имен,вне любого пространства имен.Боюсь - поправьте меня, если я ошибаюсь - вы ожидаете, что он будет вести себя как родительский каталог .. идентификатор.

Когда doxygen обрабатывает предоставленный вами фрагмент кода, он не связывается ::H_max в описании исключения, потому что не может найти переменную H_max в глобальном пространстве имен.Если вы удалите двойной префикс двоеточия, он должен предоставить ссылку на isa::H_max.

...