Язык C, похоже, не работает таким образом. Есть ли способ это исправить?
Поддержка таких символов определяется реализацией. Многие компиляторы не будут поддерживать это, некоторые могут.
Идентификатор может содержать нецифров (аз, AZ, _), цифр (0-9), универсальный символ- имя или другие определяемые реализацией символы . C17 6.4.2 1
Альтернативный
Начиная с C99, код мог бы использовать имя универсального символа через \Unnnnnnnn
или \unnnn
- не очень хорошая возможность.
Приложение будет преобразовывать исходный код struct 忍び
(который работал на одном компиляторе) в struct \u5fcd\u3073
для других компиляторов.
https://www.branah.com/unicode-converter
び び -> \ u5fcd \ u3073
#include <stdio.h>
struct \u5fcd\u3073/* Shinobi */ {
char \u540d\u524d /* Namae */[50];
char \u8840\u6db2\u578b /* Ketsuekigata */[3];
char \u6027\u5225/* Seibetsu */[10];
char \u661f\u5360\u3044/* Hoshi uranai*/[10];
int \u5e74\u9f62/* Nenrei */;
};
int main(void) {
struct \u5fcd\u3073 Uchiha_Itachi;
Uchiha_Itachi.\u5e74\u9f62 = 21;
printf("the age of itachi > %d", Uchiha_Itachi.\u5e74\u9f62);
}
Примечание: использование определений, как показано ниже, также не предназначено для работы. Поддержка для этого определяется реализацией.
// not certain to work
#define 忍び \u5fcd\u3073
Если существует острая необходимость «каким-либо образом исправить это?», Напишите свой исходный код в виде файла .wheldrake и переведите его в стандартный файл .c.
Soapbox
Один символ, который я хотел бы использовать: ≠
, знак not_equal .