namespace android {
extern int i; // declare here but define somewhere
void foo ();
}
- используется для определения переменных и функций внутри определенного имени. При использовании / вызове этих переменных / функций используйте оператор разрешения области действия ::
. например,
int main ()
{
android::foo();
}
Нет ограничений на размещение всех объявлений namespace
в одном экземпляре тела. Возможно несколько namespace android
тел, распределенных по нескольким файлам, возможно, а также иногда рекомендуется. например, * +1008 *
// x.cpp
namespace android {
void somefunc_1 ();
}
// y.cpp
namespace android {
void somefunc_2 ();
}
Теперь, иногда вы можете обнаружить, что использование оператора ::
неудобно, если его часто использовать, что делает имена излишне длиннее. В это время можно использовать директиву using namespace
.
Эта директива using
может использоваться в области действия функции / области имен / глобальной области видимости; Но не допускается в области действия class
: Почему "используется пространство имен X;" не допускается внутри уровня класса / структуры? ).
int main ()
{
using namespace android;
foo(); // ok
}
void bar ()
{
foo(); // error! 'foo' is not visible; must access as 'android::foo()'
}
Кстати, если using namespace android;
объявлено глобально (т. Е. Выше main()
), то к foo()
можно получить доступ без ::
в Bar()
.