Pertimbangan seperti apa yang layak diberikan pada platform dengan karakter non-8-bit?
angka ajaib terjadi misalnya saat menggeser;
sebagian besar dapat ditangani dengan mudah dengan menggunakan CHAR_BIT dan misalnya UCHAR_MAX, bukan 8 dan 255 (atau serupa).
semoga penerapan Anda mendefinisikannya :)
itu adalah masalah "umum" .....
masalah tidak langsung lainnya mengatakan Anda memiliki:
struct xyz {
uchar baz;
uchar blah;
uchar buzz;
}
ini mungkin "hanya" mengambil (kasus terbaik) 24 bit pada satu platform, tetapi mungkin mengambil misalnya 72 bit di tempat lain .....
jika setiap uchar memiliki "bit flags" dan setiap uchar hanya memiliki 2 bit "signifikan" atau flag yang saat ini Anda gunakan, dan Anda hanya mengaturnya menjadi 3 uchar untuk "kejelasan", maka itu mungkin relatif "lebih boros" misalnya pada platform dengan uchars 24-bit .....
tidak ada yang tidak bisa diselesaikan oleh bitfield, tetapi mereka memiliki hal-hal lain yang harus diperhatikan ....
dalam kasus ini, hanya satu enum yang mungkin menjadi cara untuk mendapatkan bilangan bulat berukuran "terkecil" yang sebenarnya Anda butuhkan ....
mungkin bukan contoh nyata, tetapi hal-hal seperti ini "menggigit" saya saat porting / bermain dengan beberapa kode .....
hanya fakta bahwa jika sebuah uchar adalah tiga kali lebih besar dari yang diharapkan "biasanya", 100 struktur seperti itu dapat menghabiskan banyak memori pada beberapa platform ..... di mana "biasanya" itu bukan masalah besar .... .
jadi hal-hal masih bisa "rusak" atau dalam hal ini "membuang banyak memori dengan sangat cepat" karena asumsi bahwa uchar "tidak terlalu boros" di satu platform, relatif terhadap RAM yang tersedia, daripada di platform lain ... ..
masalahnya mungkin lebih menonjol misalnya untuk int juga, atau jenis lain, misalnya Anda memiliki beberapa struktur yang membutuhkan 15 bit, jadi Anda menempelkannya di int, tetapi di beberapa platform lain int adalah 48 bit atau apa pun .... .
"biasanya" Anda dapat membaginya menjadi 2 uchar, tetapi misalnya dengan uchar 24-bit Anda hanya perlu satu .....
jadi enum mungkin menjadi solusi "umum" yang lebih baik ....
tergantung pada bagaimana Anda mengakses bit itu :)
jadi, mungkin ada "kekurangan desain" yang ada di belakang kepala mereka .... meskipun kodenya mungkin masih berfungsi / berjalan dengan baik terlepas dari ukuran uchar atau uint ...
ada hal-hal seperti ini yang harus diperhatikan, meskipun tidak ada "angka ajaib" di kode Anda ...
semoga ini masuk akal :)