C: Funktionsparameter ist ein struct, wie Werte direkt übergeben?

Gast #1354262
Lesenswert?

Hi,

ich frag mich grad, ob es möglich ist, einer C-Funktion, welche als 
Parameter ein struct erwartet, die Werte direkt zu übergeben, anstatt 
eine Struktur zu übergeben.

Beispiel:
1
typedef struct {
2
  unsigned char a;
3
  unsigned char b;
4
  unsigned char c;
5
} _stTest;
6

7
void func(_stTest stTest) {
8
...
9
}
10

11
//Variablendefinition
12
_stTest stABC;
13

14
// Aufruf
15
func(stABC);  //So gehts
16
func({1,2,3});//So nicht -> Wie dann?

Danke

Ralf
Gast #1354499
Lesenswert?

A. K. schrieb:
> Doch, in C99 geht es:
> 
http://gcc.gnu.org/onlinedocs/gcc-4.4.1/gcc/Compound-Literals.html#Compound-Literals

is nich wahr - das geht nur, wenn die Werte konstant sind, aber so war 
zwar das Beispiel, nicht aber die Frage formuliert.

Konstante Werte können eine Struktur-Konstante definieren, aber das ist 
ja nun nichts besonderes. Dagegen dürfte

func(int i,int a,int b)

wie bei Gast eben nicht gehen.

Nicht dass das ein Compiler theoretisch nicht könnte, er tut es halt 
nicht.

Gruss Reinhard
#1355963
Lesenswert?

Reinhard Kern schrieb:

> is nich wahr - das geht nur, wenn die Werte konstant sind, aber so war
> zwar das Beispiel, nicht aber die Frage formuliert.

Wie schon das Beispiel in der verlinkten Doku zeigt geht das auch mit 
Werten, die nicht konstant sind. Ich weiss aber grad nicht ob das eine 
Spezialität von GCC ist, oder ebenfalls C99.
1
typedef struct { int a,b,c; } S;
2

3
extern void f(S p);
4

5
void g(int x, int y, int z)
6
{
7
  f((S){1,2,3});
8
  f((S){x,y,z});
9
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren