-
- Измени решение задачи. Не помещай unicode-дескрипторы во FLASH, конвертируй функцией в real-time. - RxTx(18.11.2020 02:21)
- На чистом C скорей нельзя: если строку можно, потенциально, разобрать на constexpr буковки через "STR"[1], "STR"[2]..., то длину строки на уровне макропроцессора -- не выявить. На C++ можно сделать, начиная с C++11. Подходы могут быть немного разные: fk0(786 знак., 18.11.2020 01:58, ссылка)
- Как вариант, например так: UniSoft(230 знак., 17.11.2020 23:39)
- Примерно так и сделано, но вылезают проблемы с индейцами. Результат
должен иметь мелких индейцев, независимо от употребляемого чипа и
компилятора. - LightElf(18.11.2020 00:03)
- Ну если у вас BIG_ENDIAN, тогда да, так не прокатит... UniSoft(584 знак., 18.11.2020 01:35)
- Макропроцессор не знает ничего о sizeof(), размеры уже вычисляются компилятором после прохода препроцессора. Знал бы, можно было бы сделать макрос, который бежит по буковкам строки (от 0 до sizeof) и склеивает их чередуя с нулями. По крайней мере для маленьких размеров (до сотни, например). - fk0(18.11.2020 02:02)
- Всё хуже. L"xxxx" определяет строку из wchar_t, а wchar_t на linux
типично 32-битный... - fk0(18.11.2020 00:51)
- Если мы про C++, то ведь есть и u"xxxx", это уж точно char16_t. - йцyкeн(18.11.2020 10:18)
- Ну если у вас BIG_ENDIAN, тогда да, так не прокатит... UniSoft(584 знак., 18.11.2020 01:35)
- Примерно так и сделано, но вылезают проблемы с индейцами. Результат
должен иметь мелких индейцев, независимо от употребляемого чипа и
компилятора. - LightElf(18.11.2020 00:03)
- В языке Си нет понятия строки, поэтому ответ - нет. Конвертация между кодировками - замоченная вещь, которой явно не место в компиляторе. lloyd(109 знак., 17.11.2020 23:23)