[解決済み] 8bit char以外を搭載しているプラットフォームは?
質問内容
時々、SOで誰かが指摘するのですが
char
(バイト)は必ずしも8ビットではありません。
.
どうやら8ビット
char
はほぼ全世界共通です。私は、主流のプラットフォームでは、8ビットの
char
市場で存続させるためです。
現在も歴史的にも、どのようなプラットフォームで
char
また、なぜ通常の8ビットと異なるのでしょうか?
コードを書く際に、(汎用ライブラリなどの)クロスプラットフォーム対応を考える場合、8ビットでないプラットフォームに対してどのような配慮が必要でしょうか。
char
?
過去に、アナログ・デバイセズ社のDSPで
char
は16ビットです。DSPはちょっとニッチなアーキテクチャなんでしょうね。(なお、当時は手書きのアセンブラがCコンパイラの性能に簡単に勝っていたので、そのプラットフォームでのC言語の経験はあまりありません)。
どのように解決するのか?
char
は、OMAP2などで登場したTexas Instruments社のC54x DSPでも16bitです。他にも16ビットや32ビットのDSPがあります。
char
. 24bitのDSPも聞いたことがあるような気がしますが、何だか思い出せないので気のせいかもしれませんね。
もう一つの考慮点は、POSIXが義務付けている
CHAR_BIT == 8
. だから、POSIXを使っているならば、それを前提にすればいい。後で誰かがあなたのコードをPOSIXの実装に近いものに移植する必要が出てきたとき、たまたまあなたが使っている関数が別の大きさの
char
それは運が悪いとしか言いようがない。
しかし、一般的には、問題を考えるよりも、問題を回避する方が簡単な場合がほとんどだと思うのです。ただ
CHAR_BIT
. 正確な8ビット型が必要な場合は
int8_t
. あなたのコードは、期待しないサイズを黙って使うのではなく、それを提供しない実装では騒々しくコンパイルに失敗します。少なくとも、それを仮定する正当な理由がある場合は、それを主張することになるでしょう。
関連
-
[解決済み】C++コンパイルタイムエラー:数値定数の前に期待される識別子
-
[解決済み】Cygwin Make bash コマンドが見つかりません。
-
[解決済み] クラスにデフォルトコンストラクタが存在しない。
-
[解決済み] to_string は std のメンバーではない、と g++ が言っている (mingw)
-
[解決済み] int argc, char *argv[] とはどういう意味ですか?
-
[解決済み] mutable' キーワードには、const 関数で変数を変更できるようにする以外の目的があるのでしょうか?
-
[解決済み] char s[]とchar *sの違いは何ですか?
-
[解決済み] unsigned charとは何ですか?
-
[解決済み】char * constとconst char *の違いは何ですか?
-
[解決済み】C言語のchar arrayとchar pointerの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C++ - 解放されるポインタが割り当てられていないエラー
-
[解決済み】C-stringを使用すると警告が表示される。"ローカル変数に関連するスタックメモリのアドレスが返される"
-
[解決済み】cc1plus:エラー:g++で認識されないコマンドラインオプション"-std=c++11"
-
[解決済み】Visual C++で "Debug Assertion failed "の原因となる行を見つける。
-
[解決済み】#include<iostream>は存在するのですが、「識別子 "cout "は未定義です」というエラーが出ます。なぜですか?
-
[解決済み] 解決済み] `pthread_create' への未定義の参照 [重複] [重複
-
[解決済み】警告 - 符号付き整数式と符号なし整数式の比較
-
[解決済み] スタックアロケーションにより初期化されていない値が作成された
-
[解決済み] ワードとバイトの違いは何ですか?
-
[解決済み] 標準化委員会が注目するエキゾチックなアーキテクチャ