Компилятор принимает
namespace first
{
int x = 5;
int y = 10;
}
namespace second
{
double x = 3.1416;
double y = 2.7183;
}
и эффективно создает ассемблерный код, который работает примерно так:
_first@@x: dd 5
_first@@y: dd 10
_second@@x: dq 3.1416
_second@@y: dq 2.7183
Если вы не знакомы с языком ассемблера, каждый из этих четырех операторов резервируетсяпамяти, два для 32-разрядных целых чисел и два для значений с плавающей запятой и присваивать им метки.Метка является адресом памяти.
Обратите внимание, что пространство имен определяет каждое имя переменной.Сам по себе @
не имеет смысла, но экранирует пространство имен и имя переменной, чтобы изолировать языковые переменные с необычно именованными C++
.Идентификаторы языка ассемблера обычно допускают больший диапазон символов в них, чем языки высокого уровня, что удобно в таких случаях, как это.