Я наткнулся на код C ++ вроде этого:
int $T$S;
Сначала я подумал, что это какой-то PHP-код или что-то неправильно вставленное туда, но он компилируется и отлично работает (на MSVC 2008).
Какие символы допустимы для переменных в C ++ и есть ли другие странные символы, которые вы можете использовать?
Я только что выполнил поиск и обнаружил, что это действительно только в 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