PIC xc8: Error "initialization of function arguments is illegal"

Gast #5043857
Moin,

ich habe versucht bei meiner Funktion/Funktionsbezeichner den 
Argumenten, am Anfang meines Projektes, gleich einen Wert mit auf den 
Weg zu geben.
Das geht entweder nicht oder aber ich mach das falsch.
Als Beispiel:

unsigned char Funktion(unsigned char Argument = 0, bool CRC_A = false);

Geht das nicht, wie macht man es dann richtig?

Gruß
dat
Beast
Persönliche Seite
Andreas G. schrieb:
> Moin,
>
> ich habe versucht bei meiner Funktion/Funktionsbezeichner den
> Argumenten, am Anfang meines Projektes, gleich einen Wert mit auf den
> Weg zu geben.
> Das geht entweder nicht oder aber ich mach das falsch.

Wozu soll das gut sein?
Es gibt die Möglichkeit in einigen Sprachen (z.B. C++) Argumenten 
default-Werten zuzuweisen, die dann beim Aufrufen weggelassen werden 
können.

> Als Beispiel:
>
> unsigned char Funktion(unsigned char Argument = 0, bool CRC_A = false);
>
> Geht das nicht, wie macht man es dann richtig?
In C geht das nicht, richtig.

In C++ würde es so aussehen:
1
#include <cstdio>
2

3
void foo(int a, bool b=false) {
4
    printf("int=%d, bool=%s\n", a, b?"true":"false");
5
}
6

7
int main() {
8
    foo(42, true);
9
    foo(42);
10
    return 0;
11
}
Gibt aus Ausgabe:
1
int=42, bool=true
2
int=42, bool=false
Also im Prinzip so wie du es machen wolltest.
Aber eben nur in C++, nicht in C.

Mit freunclichen Grüßen,
N.G.
Gast
N. G. schrieb:
> Also im Prinzip so wie du es machen wolltest.

Jaaa, es ist exakt so wie ich das gern hätte, und auch bei dem 
Arduino-Code gesehen hab...wenn es aber nicht geht dann werde ich die 
fehlenden default-Werte händisch beim Aufruf der Funktion zuschreiben.

Gruß
Beast
Persönliche Seite
Andreas G. schrieb:
> wenn es aber nicht geht...

Ich kenne den Compiler nicht, aber kann der kein C++?
Benenne doch testweise einfach mal deine Source-Datei in .cpp und und 
probiere einen Compile-Vorgang.

(Fast) Jeder C-Code ist auch legitimer C++-Code, das bedeutet, wenn die 
dieses Feature soo wichtig ist kannst du dein Projekt auf C++ umstellen.
Dann hättest du auch noch ein paar andere super C++-Features.

Hängt natürlich vom Compiler ab.

Aber im Ernst: nur deswegen würde ich nicht auf C++ umsteigen, dann 
würde ich mehr davon verwenden.
Ich wollte nur die Möglichkeit klar stellen ;-)

Mit freundlichen Grüßen,
N.G.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.