sizeof(char) = 1, массив из двух char должен быть размером 2, но вот что мы видим, хотя sizeof(char) = 1
https://drive.google.com/file/d/16NX_l3bEzo4psVqzKloxIr1nQQpocNmu/view?usp=sharing
Форум программистов «Весельчак У» |
|
Начало | Помощь | Поиск | Календарь | Почта | Войти | Регистрация |
21
: 08-02-2024 09:03
|
||
Автор Boriska - Последний ответ от Boriska | ||
sizeof(char) = 1, массив из двух char должен быть размером 2, но вот что мы видим, хотя sizeof(char) = 1
https://drive.google.com/file/d/16NX_l3bEzo4psVqzKloxIr1nQQpocNmu/view?usp=sharing |
22
: 08-02-2024 03:28
|
||
Автор Boriska - Последний ответ от Алексей++ | ||
Ochkarik, CHAR - это студийный алиас (то есть - вообще не относится к стандарту). Размер его в байтах равен sizeof(CHAR)
|
23
: 07-02-2024 21:08
|
||
Автор Boriska - Последний ответ от Ochkarik | ||
Алексей++, я
"CHAR_BIT - number of bits in a byte"... а сколько тогда в CHAR - байт?) как-то продолжение беседы не увидел сразу) |
24
: 04-02-2024 12:17
|
||
Автор Boriska - Последний ответ от Boriska | ||
UTF8
|
25
: 04-02-2024 07:50
|
||
Автор Boriska - Последний ответ от Алексей++ | ||
Boriska, казалось бы, при чём тут шарп
а сам файл в какой кодировке то, кстати ? |
26
: 04-02-2024 07:46
|
||
Автор Boriska - Последний ответ от Boriska | ||
вот из С#
char a = 'A'; int b = sizeof(a); 'identifier' does not have a predefined size, therefore sizeof can only be used in an unsafe context Without unsafe context, the sizeof operator can only be used for types whose size is a compile-time constant. If you are getting this error, use an unsafe context. The following example generates CS0233: Возможно там было что то из этой оперы, но по идее бред. Надо будет откатить и все пересмотреть. |
27
: 04-02-2024 07:33
|
||
Автор Boriska - Последний ответ от Boriska | ||
вот я и попытался съэкономить
Код: code_page_ru['А'] = 'A'; //'А'0x90 если русский символ есть я подставляю его, если его нет беру значение из знакогенератора индикатора.code_page_ru['Б'] = (char)160; потом глядь, а 'A' двухбайтовый сейчас это выглядит вот так, все работает но осадочек остался Код: char _code_page_ru[256] = { [' ' & 0x00FF] = ' ', ['.' & 0x00FF] = '.', ['=' & 0x00FF] = '=', ['+' & 0x00FF] = '+', ['-' & 0x00FF] = '-', [':' & 0x00FF] = ':', [';' & 0x00FF] = ';', ['[' & 0x00FF] = '[', [']' & 0x00FF] = ']', ['(' & 0x00FF] = '(', [')' & 0x00FF] = ')', ['%' & 0x00FF] = '%', ['@' & 0x00FF] = '@', ['*' & 0x00FF] = '*', ['/' & 0x00FF] = '/', ['\\' & 0x00FF] = '\\', ['|' & 0x00FF] = '|', ['?' & 0x00FF] = '?', ['<' & 0x00FF] = '<', ['>' & 0x00FF] = '>', ['А' & 0x00FF] = 'A', //'А'0x90 ['Б' & 0x00FF] = (char)160, //'Б' ['В' & 0x00FF] = 'B', //'В' ['Г' & 0x00FF] = (char)161, //'Г' ['Д' & 0x00FF] = (char)224, //'Д' ['Е' & 0x00FF] = 'E', //'Е' ['Ж' & 0x00FF] = (char)163, //'Ж' ['З' & 0x00FF] = (char)164, //'З' |
28
: 03-02-2024 23:44
|
||
Автор Boriska - Последний ответ от RXL | ||
Т.е. нужны константы и строки в 8-битной кодировке, совместимой с используемым шрифтом.
С константами все просто: Код: (C) enum { // cp866 char_ru_A = 0x80, char_ru_B = 0x81, // ... }; code_page_ru[char_ru_A] = ...; Строки нужно перекодировать перед компиляцией. Например, объявить строки extern и поместить в один модуль не .c, а с каким-то другим расширением, напр. .cstr, и прописать для него в Makefile правила сборки, где будет создан файл .c в нужной кодировке. |
29
: 03-02-2024 21:11
|
||
Автор Boriska - Последний ответ от Boriska | ||
Хорошо бы. Но это не VS и не для ОС. Это STM32CubeIDE для микроконтроллеров STM32. Там вроде С есть и даже C++ а эта страница заполнялась для индикации на ЖК индикаторе двухстрочном. Там wchar небывает
|
30
: 03-02-2024 15:03
|
||
Автор Boriska - Последний ответ от RXL | ||
Есть такой wchar...
|