const struct EbmlSyntax {
uint32_t id;
EbmlType type;
int list_elem_size;
int data_offset;
union {
uint64_t u;
double f;
const char *s;
const struct EbmlSyntax *n;
} def;
} ;
上記のconst構造体を使用する必要があり、を使用して定数構造体を作成したい
{ EBML_ID_DOCTYPE, EBML_STR, 0, offsetof(Ebml,doctype), {.def.s = "(none)"} }
ただし、VS8.0コンパイラではエラーエラーC2143が発生します。構文エラー:「。」の前に「}」がありません。C++プロジェクトをコンパイルするとき。
私はいくつかの方法を試しましたが、char *をuint64_t(最初のタイプに割り当てる)にキャストする方法しか見つかりません。
(uint64_t)("none")
そして私は組合を使うことができます。この方法は安全ですか?VSデバッグツールを使用して、このオブジェクトと他のstruct-unionオブジェクトの構造を確認します。structとunionのメンバーが正しく期限切れになっていることは問題ないようです。