You have been able to return a struct by value in C since at least C89:
typedef struct { double d; int err; } Ret; Ret foo(void) { Ret r = { 0.0, 43}; return r; } int main() { Ret r = foo(); }