Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

C89 structs

Name: Anonymous 2010-08-30 0:37

Hi /prog/. When I program C I usually just use whatever features gcc allows without really worrying about different standards. However, I am now trying to learn strict C89. I know that it's no longer "standard" C, but I want to learn it anyways.

typedef struct {
    int a, b;
} s;


So normally, if I wanted to return an s from a function I would just use return (s) {1, 2};, but apparently that's not allowed in C89. So right now I'm using
s res;
res.a = 1;
res.b = 2;
return res;


Is there a better/shorter way to do this?

Thanks.

Name: Anonymous 2010-08-30 2:02

>>1
No, compound literals are a C99 feature. (which I recommend very much over C89 unless you're targeting microcontroller compilers, which aren't going to fully conform to any standard anyway)

>>11
If you dynamically allocate memory for this, you're doing it wrong.

Anyway, for simple vector arithmetic like this you want to make the functions inline, for which any modern compiler will generate about the same code for pointers or pass by value.
But again, not a C89 feature...

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List