www.mikrocontroller.net

Forum: Compiler & IDEs Parameterübergabe geht nicht


Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

habe ein ziemlich einfaches Problem, dass ihr sicher gleich lösen
könnt:

Wieso lässt sich folgende Source ncht compilieren?

//--------------------


void quadriere(int& wert);

int main(void)
{
return 0;
}

void quadriere(int& wert)
 {
    wert++;
 };

//--------------------

vielen Dank an euch

Autor: peter dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
& liefert die Adresse einer Variablen, ist also als Typdeklaration
völlig ungeeignet.


Peter

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Laut meinem C buch (aus dem dieses beispiel ist)
soll dass eine Parameterübergabe per referenz sein.

D.H. man übergibt eine Variable direkt anstatt nur eine Kopie

in Visual Studio Funktioniert dass auch nur nicht beim GCC

sonst noch vorschläge?

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dein C-Buch sollte bitte schön auch C++ drauf schreiben.

GCC kann auch C++, aber du musst ihm das dann bitte auch sagen,
dass es eine C++-Datei ist.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peters Aussage trifft nur dann zu, wenn es um C anstelle von C++ geht.

In C++ ist das eine Referenz, und soweit vollkommen in Ordnung. Das ist
gültiger C++-Sourcecode.

Warum sich der Quelltext nicht compilieren lässt, werden die
Fehlermeldungen des Compilers verraten.
Ansehen, bei Nichtverständnis hier posten, gezielt fragen!

Lautet die Dateinamenserweiterung (Extension) der Quelltextdatei
zufälligerweise .c?

Versuch's mal mit .cpp.

Der Quelltext macht allerdings nichts; in main() wird die Funktion
quadriere() gar nicht aufgerufen.

  int main(void)
  {
    int bla;

    bla = 2;

    quadriere(bla);

    // bla ansehen/ausgeben/was auch immer
  }

Autor: Μαtthias W. (matthias) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

das ist *C++*. In C gibt es die Parameterübergabe in dieser Weise
nicht. Du mußt einen Pointer übergeben.

Matthias

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, danke. dass war die entscheidente Info

hab in der Schule c++ gelernt, verwende jetzt aber c
mal sehen was noch für überraschungen auf mich warten

cu

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.