Любой способ создать символ размера 32 в ANSI c?

Я знаю, что C++11 имеет тип char32_t, который составляет 4 байта, и мне интересно, возможно ли реализовать что-то подобное в C. В программе, которую я пишу, необходимо, чтобы все массивы char были кратны 4 байтам.

2 ответа

Как вы планируете работать с этими данными? Будете ли вы использовать только один байт в 32-битной переменной или будете хранить в нем фактические 32-битные данные?

Одним из простых решений было бы создание собственного абстрактного типа данных, чтобы вы могли изменить его позже:

#include <stdint.h>
typedef int32_t mChar;
mChar myChar32Array[100]; // Allocates 100x32-bit values

Существует большая ловушка с возиться с char связанные типы данных: многие библиотеки и фрагменты кода предполагают, что char это char при работе с текстом. Если вы планируете использовать функции манипуляции со строками и ожидаете, что они будут работать в нескольких системах, вы всегда будете объявлять строки как массивы charи никогда как signed char или же unsigned char, Единственный раз, когда вы должны использовать unsigned char в том случае, если вы работаете с 8-битными двоичными данными напрямую и не хотите иметь дело с неожиданными странностями, такими как расширение знака, которое даст вам забавные значения, если вы не будете осторожны.

Стандарт C11 поддерживает char32_t со строками, закодированными в UTF-32, например:

#include <uchar.h>

int main() {
    char32_t *str = U"Hello world";
}

Программа компилируется чисто с скажем gcc -std=c11,

Другие вопросы по тегам