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

Gast #5043857
Lesenswert?

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 #5043889
Lesenswert?

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 #5044213
Lesenswert?

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 #5044249
Lesenswert?

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

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