Forum: Compiler & IDEs call by Reference? (&)


von qwerty (Gast)


Lesenswert?

Hi all,
Ich würde gerne folgendes machen:
-----------------------------------
int cfunc(int &a, int &b);

void cfunc (int &a , int &b ){
&a + &b;}
-----------------------------------
In C++ geht das, aber irgendwie will AVR GCC es nicht akzeptieren.
Feller:
avr-gcc.exe  -mmcu=atmega16 -Wall -gdwarf-2 -Os -std=gnu99 
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP 
-MT exp1.o -MF dep/exp1.o.d  -c  ../exp1.c
../exp1.c:3: error: expected ';', ',' or ')' before '&' token
../exp1.c:5: error: expected ';', ',' or ')' before '&' token
make: *** [exp1.o] Error 1

Vielen Dank für die Hilfe!

von Rolf Magnus (Gast)


Lesenswert?

> In C++ geht das, aber irgendwie will AVR GCC es nicht akzeptieren.

Weil es eben nur in C++ geht. In C gibt es keine Referenzen.

von ... (Gast)


Lesenswert?

Das hier ist falsch!

void cfunc (int &a , int &b )
{
  &a + &b;
}

Du versuchst die Zeiger zu addieren. Wenn dann musst du das so 
schreiben:

void cfunc (int &a , int &b )
{
  a + b;
}

Das geht nur in C++, in C aber nicht. In C musst du das so schreiben:

void cfunc (int *a , int *b )
{
  *a + *b;
}

von qwerty (Gast)


Lesenswert?

Danke x 1000 :)

von Simon K. (simon) Benutzerseite


Lesenswert?

Das Ergebnis der Addition wird aber keiner Variable zugewiesen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.