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 struct?
{ EBML_ID_DOCTYPE, EBML_STR, 0, offsetof(Ebml,doctype), {.def.s = "(none)"} }
Но, то VS8.0 компилятор выдаст ошибку об ошибке C2143: синтаксическая ошибка: отсутствует «}» до '.' когда я компилятор проекта C++.
Я попробовал несколько методов, но я только найти способ, закиньте символ * в uint64_t (присвоить первый тип),
(uint64_t)("none")
и я могу использовать союз. Этот метод безопасен? Я проверяю структуру этого и другого объекта struct-union с помощью инструментов отладки VS. Кажется, что член структуры и объединения может быть правильно израсходован.
Я думаю, что '.' Перед 'def.s' должен быть удален – piwi
У C++ нет указателей (нотация' .def.s = '). C, но только с C99, который Microsoft не поддерживает. – hmjd
Да, вы правы. Я пробовал несколько методов, но, я только нахожу способ, который бросает char * на uint64_t, и я могу использовать объединение. Этот метод безопасен? Кажется, все в порядке. –