3 ms·
I prefer to use generic structures (tuples, pairs etc.) or return proper type. One time structs are usually redeclared on multiple places. It is really hard mai
by oselhn 11y ago
I prefer to use generic structures (tuples, pairs etc.) or return proper type. One time structs are usually redeclared on multiple places. It is really hard maintain such code.
- nwmcsween 11y agoWell it's not really one time use than is it. Compound literals are your friend.
- mbel 11y ago> One time structs are usually redeclared on multiple places. It is really hard maintain such code. Well, if you don't need forward declarations, you can define structs inline in function signature: #include <stdio.h> struct ret { int a; int b} hello(int c) { return (struct ret){ c, c + 1 }; } int main(int argc, char **argv) { struct ret result = hello(2); printf("%d %d", result.a, result.b); } I'm not sure how portable it is though, works in gcc and in whatever ideone is using: https://ideone.com/bgZUPS https://ideone.com/bgZUPS
- gpderetta 11y agoG++ 5.2 complains: "new types may not be defined in a return type" An alternative in C++14: auto hello(int c) { struct { int a; int b; } result { c, c + 1 }; return result; } or with gcc extensions: auto hello(int c) { return (struct { int a; int b; }) { c, c + 1 }; }
- oselhn 11y agoI meant something like that: struct x {int a, char* b} x foo(); // a lot of code struct y {char* y, int x} y bar(); //another header struct z {bool a, int b, char* c} z foo2(); It is ussually the same data structure, but someone was lazy to define it properly.