1

Тема: Не працює define і кирилиця

Чому ось таке працює

#define ONE 1

А ось таке - ні

#define ОДИН 1

2

Re: Не працює define і кирилиця

Бо ідентифікатор у C/C++ - це послідовність англійських цифр, літер і знака _, що починається не з цифри.

Подякували: leofun01, ostap34PHP, zbst3

3

Re: Не працює define і кирилиця

https://i.imgur.com/serKhpY.png
Я особливий ?

4

Re: Не працює define і кирилиця

Ні, просто ваш компілятор підтримує кирилицю.
Утім, я глянув у стандарт - дійсно, там є пункт "other implementation-defined characters". Тобто правильна відповідь на оригінальне питання - "тому, що ваш компілятор не підтримує символи кирилиці". Але я категорично не раджу писати такі програми. Бо кара Божа, карма чи вселенська справедливість, залежно від того, у що ви там вірите, вас наздожене і ви будете колись підтримувати корейський код із відповідними символами.

Подякували: Fox, leofun012

5 Востаннє редагувалося Fox (14.04.2019 20:58:14)

Re: Не працює define і кирилиця

koala написав:

Ні, просто ваш компілятор підтримує кирилицю.
Утім, я глянув у стандарт - дійсно, там є пункт "other implementation-defined characters". Тобто правильна відповідь на оригінальне питання - "тому, що ваш компілятор не підтримує символи кирилиці". Але я категорично не раджу писати такі програми. Бо кара Божа, карма чи вселенська справедливість, залежно від того, у що ви там вірите, вас наздожене і ви будете колись підтримувати корейський код із відповідними символами.

Тільки не корейский код з ієрогліфами.
До сліз....

6 Востаннє редагувалося wander (15.04.2019 10:09:34)

Re: Не працює define і кирилиця

begcpp написав:

Чому ось таке працює

#define ONE 1

А ось таке - ні

#define ОДИН 1

2.3 Character sets

Якщо коротко:
для імен стандарт визначає букви англійського алфавіту,
знак підкреслення,
і циферки.
Причому ім'я не повинно починатися з циферки.

Так само, стандарт визначає всю доступну множину символів.
Якщо коротко - Сішна локаль.
Тобто англійський алфавіт, циферки,
плюс купка символів керуючих послідовністю
( '\n' '\0', etc)

Все інше - від лукавого additional members are locale-specific.

Каель вміє в кирилицькі імена в змінних.
Але це ж каель.
Ще б він не вмів.
Він вміє все, що не потрібно вміти.

А ось мінгв/гцц/шланг можуть послати нафіг навіть за таке:

std::cout << "Привіт";