Я ищу способ инициализации структуры и вернуть этот указатель структуры в одну строку. (Портативный способ является лучшим, но для GCC, по крайней мере)Объявление структуры и указатель в одной строке
К примеру, я получил функцию:
void myfunc(const mystruct_t *ptr);
Структура определения:
typedef struct mystruct_t{
int field1;
const char *field2;
}mystruct_t;
я могу сделать:
const mystruct_t mystruct={.field1=23, .field2="myname" };
myfunc(&mystruct);
У меня есть способ сделать это в одной строке?
что-то вроде:
myfunc(&{.field1=23, .field2="myname" });
Я думаю, что синтаксис с точкой именования-инициализации, который вы используете, является расширением GCC в любом случае (поскольку вы упомянули о переносимости). – szczurcio
Если вы хотите, чтобы они были в одной строке, просто поставьте их в одну строку. Если вы имеете в виду, что хотите использовать один и тот же «;», я считаю, что нет никакого способа, потому что вам нужно объявить объект, прежде чем получить его адрес. – Nik
@szczurcio: Пожалуйста, обновите до 16-летней предыдущей версии стандарта C. Назначенные intialisers являются стандартными с C99. – Olaf