-
- Корректнее будет что-то вроде этого: evgeniy1294(269 знак., 09.01.2022 19:24)
- По-моему, ваш вариант таки некорректен, ибо enum не используется
нигде. Да и вопрос был не об этом (кстати, уже решен благодаря
SciFi). - Argon(09.01.2022 19:25)
- Корректен, совершенно нормально присваивать значения из
перечисления в переменную типа uint8_t - это много где применяется
(lwip, Qt и т.д) + так удобнее работать с флагами. Конечно, можно
задать перечесление через typedef, но тогда я не знаю, какого
базового типа будет элемент структуры - скорее всего int. evgeniy1294(154 знак., 09.01.2022 19:34)
- Извиняюсь, отвык уже от сей с этими джавами. Тем не менее пока не
соглашусь о полной плохости этого union-а, с ним хотя бы приводить
тип не придется. Да и я ведь могу внутрь него void* засунуть. Argon(134 знак., 09.01.2022 19:47)
- Пихать тип и размер в структуру всё равно нужно. А раз есть тип, то и "приводить тип" придется, хоть с union, хоть без. - evgeniy1294(09.01.2022 19:48)
- Извиняюсь, отвык уже от сей с этими джавами. Тем не менее пока не
соглашусь о полной плохости этого union-а, с ним хотя бы приводить
тип не придется. Да и я ведь могу внутрь него void* засунуть. Argon(134 знак., 09.01.2022 19:47)
- Корректен, совершенно нормально присваивать значения из
перечисления в переменную типа uint8_t - это много где применяется
(lwip, Qt и т.д) + так удобнее работать с флагами. Конечно, можно
задать перечесление через typedef, но тогда я не знаю, какого
базового типа будет элемент структуры - скорее всего int. evgeniy1294(154 знак., 09.01.2022 19:34)
- По-моему, ваш вариант таки некорректен, ибо enum не используется
нигде. Да и вопрос был не об этом (кстати, уже решен благодаря
SciFi). - Argon(09.01.2022 19:25)
- C99 compound literals? SciFi(1 знак., 09.01.2022 17:10, ссылка)
- Вы - колдун. Пробовал так - компилятор ругался. Сейчас не ругается.
Большое спасибо, это то, что надо! - Argon(09.01.2022 17:17)
- Еще раз пролистал Подбельского - нет у него об этом, хотя про C99
говорится с самого предисловия. Издание 2018г. - Argon(09.01.2022 19:27)
- Если нет, ему минус в карму. - SciFi(09.01.2022 20:01)
- Еще раз пролистал Подбельского - нет у него об этом, хотя про C99
говорится с самого предисловия. Издание 2018г. - Argon(09.01.2022 19:27)
- Вы - колдун. Пробовал так - компилятор ругался. Сейчас не ругается.
Большое спасибо, это то, что надо! - Argon(09.01.2022 17:17)
- Замените указатели на массивы, на сами массивы - тогда и получите
ту инициализацию, которую желаете. Kceния(159 знак., 09.01.2022 16:07)
- Объекты этого структурного типа будут содержать разное кол-во данных, поэтому так не получится. - Argon(09.01.2022 16:20)
- Я бы сделал указатель на типа void, a перед операцией сделать приведение типов так имхо правильней мое мнение. - PeterD(09.01.2022 16:03)
- Правильно нулём проинициализировать, и затем проверять указатель на
нуль. - Бoмж(09.01.2022 15:24)
- Либо Вы не поняли вопроса, либо я не понял ответа... - Argon(09.01.2022 15:53)
- Ок. Но в таком сучае не понимаю, в чём профит. Указатель содержит адрес, по которому лежит данная структура. Независимо от способа инициализации, место в памяти всё равно будет этой структурой занято. Нагляднее создать экземпляр этой структуры и присвоить указателю её адрес. Простите, если опять неправильно понял. - Бoмж(09.01.2022 16:07)
- Либо Вы не поняли вопроса, либо я не понял ответа... - Argon(09.01.2022 15:53)
- делай поле последним. с последним так можно cheblin(1 знак., 09.01.2022 15:24, картинка)
- Спасибо, но немного не то. В итоге надо создать массив структур,
для этого они не должны быть flexible. Т.е. должны содержать не массив, а указатель на массив. - Argon(09.01.2022 16:17)
- Тогда на C++ пишите :), а на обычном C объекты должны быть
объявлены прежде их инициализации. Тогда как вы хотите, чтобы
объект аллокировался под инициализацию. - Kceния(09.01.2022 16:30)
- Статически жэ! :) - Argon(09.01.2022 16:36)
- Указатели статически не аллокируются - статически им только
константу присвоить можно. - Kceния(09.01.2022 16:47)
- Ну пусть бы взялась константа-указатель от статически объявленного
массива. - Argon(09.01.2022 16:53)
- А вы их объявите статически - тогда может быть компилятор и съест: Kceния(75 знак., 09.01.2022 16:59)
- Так-то, конечно, съест. Мне лень выдумывать имена этих массивов. Но, наверное, придется. Argon(109 знак., 09.01.2022 17:01)
- А вы их объявите статически - тогда может быть компилятор и съест: Kceния(75 знак., 09.01.2022 16:59)
- Ну пусть бы взялась константа-указатель от статически объявленного
массива. - Argon(09.01.2022 16:53)
- Указатели статически не аллокируются - статически им только
константу присвоить можно. - Kceния(09.01.2022 16:47)
- Статически жэ! :) - Argon(09.01.2022 16:36)
- Тогда на C++ пишите :), а на обычном C объекты должны быть
объявлены прежде их инициализации. Тогда как вы хотите, чтобы
объект аллокировался под инициализацию. - Kceния(09.01.2022 16:30)
- Спасибо, но немного не то. В итоге надо создать массив структур,
для этого они не должны быть flexible. Т.е. должны содержать не массив, а указатель на массив. - Argon(09.01.2022 16:17)
- С точки зрения компилятора нечто {1, 2, 3, 4, 5} может и не
существовать вовсе или быть выделено в стеке и пропасть после
выхода из процедуры инициализации. На кого ссылка будет? - Boвa(09.01.2022 15:02)
- Ну... на статически объявленный безымянный массив, например. Не? - Argon(09.01.2022 15:06)
- Вы пытаетесь сам массив воткнуть на место указателя. Несовпадение типов. Cкpипaч(87 знак., 09.01.2022 14:31)
- Корректнее будет что-то вроде этого: evgeniy1294(269 знак., 09.01.2022 19:24)