Использование emoji в качестве имен идентификаторов в С++ в Visual Studio или GCC - программирование

Использование emoji в качестве имен идентификаторов в С++ в Visual Studio или GCC

Традиционно принятыми символами, которые мы можем использовать как часть идентификатора в С++, являются _, a-z, A-Z и 0-9 после первого символа.

Есть ли способ настроить Visual Studio или GCC для принятия emoji как части имен идентификаторов (или любого другого произвольного символа Юникода)?

int a = 2, 😊 = 3;
😊++; 😊 *= 2;
int ∑(int a, int b) {return a + b;}
cout << ∑(a * 😊, 3) << endl;

const double π = 3.14159;
double α = sin(π / 2.0);
4b9b3361

Ответ 1

Мы можем видеть из Unicode/специальные символы в именах переменных в clang not allowed?, что стандарт С++ допускает определенные наборы расширенных символов. коды emoji, похоже, попадают в допустимые диапазоны.

Насколько я могу судить, используя этот живой пример Visual Studio 2013 поддерживает расширенные символы в идентификаторах, и это поддерживается Документация по идентификаторам С++:

Спецификация С++ позволяет называть символы Unicode

А также сам Visual С++. Не ограничен ASCII.

и предоставляет ссылку, которая указывает, что это было разрешено с 2005 года. Хотя, как указывает bames53, могут быть ограничения Windows с учетом emoji.

gcc, с другой стороны, похоже, не поддерживает это, кроме как с помощью escape-кодов, из Набор символов document:

В идентификаторах символы вне диапазона ASCII могут быть указаны только с экранами '\ u и'\U, которые не используются напрямую. Если указано строгое соответствие ISO C90 с параметром, например -std = c90, или -fno-extended-identifiers, то эти escape-последовательности не разрешены в идентификаторах.