Каково время жизни составных литералов, передаваемых в качестве аргументов?
Это компилируется без предупреждений с использованием Clang.
typedef struct {
int option;
int value;
} someType;
someType *init(someType *ptr) {
*ptr = (someType) {
.option = ptr->option | ANOTHEROPT,
.value = 1
};
return ptr;
}
int main()
{
someType *typePtr = init( &(someType) {
.option = SOMEOPT
});
// do something else with typePtr
}
Это даже действительный C?
Если так: каково время жизни составного литерала?