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