[解決済み】typedef 固定長配列
2022-04-03 21:58:26
質問
24ビットのデータ型を定義する必要があります。
char[3]
を使用して型を表現します。を型付けすることはできますか?
char[3]
から
type24
? コードサンプルで試してみました。私は
typedef char[3] type24;
をヘッダーファイルに追加しました。コンパイラはそれについて文句を言わなかった。しかし、私が関数を定義したとき
void foo(type24 val) {}
と文句を言われました。次のような関数を定義できるようにしたい。
type24_to_int32(type24 val)
の代わりに
type24_to_int32(char value[3])
.
解決方法は?
typedefは次のようになります。
typedef char type24[3];
しかし、これはおそらく非常にまずい考えです。なぜなら、結果として得られる型は配列型ですが、それを使う人にはそれが配列型であることが分からないからです。関数の引数として使われる場合、それは値ではなく参照で渡されることになります。
sizeof
というのは間違いです。
より良い解決策は
typedef struct type24 { char x[3]; } type24;
また、おそらく
unsigned char
の代わりに
char
というのは、後者は実装で定義された符号を持つからです。
関連
-
[解決済み】Cコンパイルエラーです。Idは1終了ステータスを返した
-
[解決済み】「無効なイニシャライザー」と表示されるのですが、何が間違っているのでしょうか?
-
[解決済み] clang: error: linker command failed with exit code 1が表示されるのはなぜですか?
-
[解決済み】whileループの時間複雑性(Big O)はどうやったらわかるの?
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] 配列からArrayListを作成する
-
[解決済み] 配列に特定のインデックスで項目を挿入する方法 (JavaScript)
-
[解決済み】オブジェクトの配列を文字列のプロパティ値でソートする
-
[解決済み】配列に何かを追加する方法は?
最新
-
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 実装 サイバーパンク風ボタン