Могу ли я создать имя переменной с не-ASCII символами в c ++? - PullRequest
3 голосов
/ 28 марта 2020

Я пишу на c ++ с 2010 года.

Я только что случайно ввел букву «“ »в свой код, наведя на нее курсор мыши, и заметил, что Visual Studio просто говорит, что нет переменной« й «.

Я написал int й = 1;, и он только что скомпилирован!

Что я пропустил?


Бьюсь об заклад, это, вероятно, функции c ++ 11,14 или что-то вроде этого .

Ответы [ 3 ]

3 голосов
/ 28 марта 2020

Вот что говорит Стандарт ([lex.phases]):

Физические символы исходного файла отображаются в соответствии с реализацией в базовый c исходный набор символов (введение символы новой строки для индикаторов конца строки) при необходимости. Допустимый набор физических символов исходного файла определяется реализацией.

Таким образом, ваша конкретная реализация поддерживает это, но она не гарантированно переносима на любую другую реализацию.

1 голос
/ 28 марта 2020

Если вы посмотрите приложение E этого документа , вы увидите, что существуют определенные диапазоны Юникода, которые могут быть именами переменных. Эти диапазоны включают:

00A8, 00AA, 00AD, 00AF, 00B2-00B5, 00B7-00BA, 00B C -00BE, 00C0-00D6, 00D8-00F6, 00F8-00FF 0100-167F , 1681-180D, 180F-1FFF 200B-200D, 202A-202E, 203F-2040, 2054, 2060-206F 2070-218F, 2460-24FF, 2776-2793, 2C00-2DFF, 2E80-2FFF 3004-3007, 3021- 302F, 3031-303F 3040-D7FF F900-FD3D, FD40-FDCF, FDF0-FE44, FE47-FFFD 10000-1FFFD, 20000-2FFFD, 30000-3FFFD, 40000-4FFFD, 50000-5FFFD, 60000-6FFFD, 70000-7FFFD, 70000-7FFFD , 80000-8FFFD, 90000-9FFFD, A0000-AFFFD, B0000-BFFFD, C0000-CFFFD, D0000-DFFFD, E0000-EFFFD

0 голосов
/ 28 марта 2020

Что ж, похоже, нет ограничений на использование символа Unicode для определения идентификатора в соответствии с MSDN

struct テスト         // Japanese     'test'
{
void トスト() {}  // Japanese      'toast'
};

 int main() {
テスト \u30D1\u30F3;  // Japanese      パン 'bread' in UCN form
パン.トスト();        // compiler      recognizes UCN or literal form
 }

Я разочарован тем, что cplusplus.com не знает об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...