Целостность RTOS \ Мультикомпилятор

В Windows я вижу любую переменную, которую я объявил в пространстве имен, за пределами этого пространства имен, но когда дело доходит до мультикомпилятора, это настолько строго, что если вы объявили некоторую переменную в, скажем, пространстве имен X, вы должны получить доступ к этой переменной только в пространстве имен X, но я хочу получить доступ к этой переменной также из пространства имен.

Существуют ли какие-либо пре-процессорные определения или какой-либо способ сделать это возможным. Это необходимо для меня, я не могу удалить пространства имен.

Любая помощь приветствуется.

namespace X
{
int a = 5;
}

int b = a + 6;

result: a is undefined in multi compiler

-4

Решение

GHS / Multi прав в отклонении вашего кода (как GCC, например).
Чтобы получить доступ к членам пространства имен, используйте оператор разрешения области:

namespace X
{
int a = 5;
}

int main()
{
int b = X::a + 6;
}
2

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

Как альтернатива квалификации каждого использования:

namespace X
{
int a = 5;
}
using X::a; // In the global namespace, a now means X::a

int main()
{
int b = a + 6; // Per the using-declaration, this is X::a
}
0

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