знак доллара в имени переменной?

Я наткнулся на код C ++ вроде этого:

int $T$S;

Сначала я подумал, что это какой-то PHP-код или что-то неправильно вставленное туда, но он компилируется и отлично работает (на MSVC 2008).

Какие символы допустимы для переменных в C ++ и есть ли другие странные символы, которые вы можете использовать?

26
задан JL2210 16 September 2019 в 01:22
поделиться

1 ответ

Я только что выполнил поиск и обнаружил, что это действительно только в VC, а не в стандарте C

Microsoft Specific

Только первые 2048 символов идентификаторов Microsoft C ++ являются значительное. Имена для пользовательских типов «декорированы» компилятором для сохранения информации о типах. Результирующее имя, включая информацию о типе, не может быть длиннее 2048 символов. (См. Декорированные имена для получения дополнительной информации.) Факторы, которые могут влиять на длину декорированного идентификатора:

  • Обозначает ли идентификатор объект определенного пользователем типа или тип, производный от пользовательский тип.

  • Обозначает ли идентификатор функцию или тип, производный от функции.

  • Количество аргументов функции.

Знак доллара также является допустимым идентификатором в Visual C ++.

// dollar_sign_identifier.cpp
struct $Y1$ {
    void $Test$() {}
};

int main() {
    $Y1$ $x$;
    $x$.$Test$();
}

https://msdn.microsoft.com/en-us/library/partnercenter/565w213d (v = vs.90) .aspx
http://msdn.microsoft.com/en-us/library/565w213d.aspx


Редактировать: gcc также поддерживает это расширение

6.34 Знаки доллара в именах идентификаторов

В GNU C вы обычно можете использовать знаки доллара в именах идентификаторов. Это потому, что многие традиционные реализации C допускают такие идентификаторы. Однако знаки доллара в идентификаторах не поддерживаются на нескольких целевых машинах, обычно потому, что целевой ассемблер их не допускает.

http://gcc.gnu.org/onlinedocs/gcc/Dollar-Signs.html#Dollar-Signs

12
ответ дан 28 November 2019 в 07:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: