2014-06-18 4 views

ответ

7

Да. Вы можете использовать compound literals, представленный на C99.

some_function((struct pint) {5, 10}); 
+0

Я не спускал вниз, но думаю, вы должны указать, что продолжительность хранения структуры заканчивается концом закрывающего блока. И afaik не может сделать что-то подобное с динамической памятью. – mafso

+2

@mafso Поскольку 'struct' передается по значению в любом случае (этот вопрос касается C, а не C++), аргумент о его времени жизни является немым. – cmaster

+0

Обратите внимание, что круглые скобки вокруг аргумента функции являются излишними. 'some_function ((struct point) {5, 10});' работает так же хорошо. – cmaster

0

Вы можете сделать это в C и вызвать вашу функцию как этот парень сказал, но вам необходимо добавить флаг -std = C99 к вашей Gcc строке вызова, иначе он может не удалось, если вы используете некоторые -W * флаги.