Я понимаю, что это не должно быть сделано, но я считаю, что видел примеры, которые делают что-то вроде этого (код примечания не обязательно синтаксически правильный, но идея есть)
typedef struct{
int a,b;
}mystruct;
А затем здесь функция
mystruct func(int c, int d){
mystruct retval;
retval.a = c;
retval.b = d;
return retval;
}
Я понял, что мы всегда должны возвращать указатель на структуру malloc'ed, если мы хотим сделать что-то подобное, но я уверен, что видел примеры, которые делают что-то вроде этого. Это верно? Лично я всегда либо возвращаю указатель на структуру malloc'ed, либо просто передаю ссылку на функцию и изменяю там значения. (Поскольку я понимаю, что как только объем функции закончен, любой стек, используемый для выделения структуры, может быть перезаписан).
Добавьте вторую часть вопроса: это зависит от компилятора? Если да, то каково поведение последних версий компиляторов для настольных компьютеров: gcc, g++ и Visual Studio?
Мысли по этому поводу?