だから私は次のようなコードがある場合: Cでtypedefされた共用体の構造体を初期化するにはどうしたらいいですか?
typedef union {
long integer;
float decimal;
long *integerPtr;
float *decimalPtr;
} Number;
typedef struct Point {
Number x;
Number y;
} Point;
がどのように私はこれを初期化しますか?それは次のように簡単ですか?私もconstでこれを行うことはできますか?
Point p = { 100, 100 };
const Point p2 = { 640, 200 };
int someNum, someOtherNum;
Point p3 = { &someNum, &someOtherNum };
FYI:具体的には、C99のCコードより前のものです。
は、C君のバージョンのタグを追加します。しかしとして厳格なエイリアシング規則を使用すると、float型のサイズと同じである長いの大きさを提供し、タイプpunningを使用しようとすることができます適用されません。ターゲット。一般的に、古代のCコードは書いてはいけませんが、C99で始まった現代のCを使ってください。これは指定された初期化子をサポートしており、最初のメンバだけでなく '共用体 'も初期化できます。 Re。あなたの質問: 'union'をどのように初期化したいのかははっきりしません。そして、「constでこれをやってもいいですか?」とどういう意味ですか?あなたのコードはどのような組合員が現在アクティブであるかを知ることになっていますか? – Olaf
'ポイントp = {{100}、{100}};で十分ですか? 'integer'フィールドを初期化します。 – chux