Тема: Не працює define і кирилиця
Чому ось таке працює
#define ONE 1
А ось таке - ні
#define ОДИН 1
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → C++ → Не працює define і кирилиця
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися
Чому ось таке працює
#define ONE 1
А ось таке - ні
#define ОДИН 1
Бо ідентифікатор у C/C++ - це послідовність англійських цифр, літер і знака _, що починається не з цифри.
Ні, просто ваш компілятор підтримує кирилицю.
Утім, я глянув у стандарт - дійсно, там є пункт "other implementation-defined characters". Тобто правильна відповідь на оригінальне питання - "тому, що ваш компілятор не підтримує символи кирилиці". Але я категорично не раджу писати такі програми. Бо кара Божа, карма чи вселенська справедливість, залежно від того, у що ви там вірите, вас наздожене і ви будете колись підтримувати корейський код із відповідними символами.
Ні, просто ваш компілятор підтримує кирилицю.
Утім, я глянув у стандарт - дійсно, там є пункт "other implementation-defined characters". Тобто правильна відповідь на оригінальне питання - "тому, що ваш компілятор не підтримує символи кирилиці". Але я категорично не раджу писати такі програми. Бо кара Божа, карма чи вселенська справедливість, залежно від того, у що ви там вірите, вас наздожене і ви будете колись підтримувати корейський код із відповідними символами.
Тільки не корейский код з ієрогліфами.
До сліз....
Чому ось таке працює
#define ONE 1
А ось таке - ні
#define ОДИН 1
2.3 Character sets
Якщо коротко:
для імен стандарт визначає букви англійського алфавіту,
знак підкреслення,
і циферки.
Причому ім'я не повинно починатися з циферки.
Так само, стандарт визначає всю доступну множину символів.
Якщо коротко - Сішна локаль.
Тобто англійський алфавіт, циферки,
плюс купка символів керуючих послідовністю
( '\n' '\0', etc)
Все інше - від лукавого additional members are locale-specific.
Каель вміє в кирилицькі імена в змінних.
Але це ж каель.
Ще б він не вмів.
Він вміє все, що не потрібно вміти.
А ось мінгв/гцц/шланг можуть послати нафіг навіть за таке:
std::cout << "Привіт";
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися