PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Fehlermeldung bei Division



fredyxx
30.04.2016, 06:28
Hallo,

wieso erhalte ich beim Kompilieren eine Fehlermeldung bei "ZLängeM3 = ZLängeM2 / 2.5;" aber nicht bei "g2 = g1 / 2.5;"
Die Meldung ist: error: stray '\303' in program




int g1 = 20;
float g2 = 0;

int ZLängeM2 = 20; // gewünschte Zahnstangenausfahrlänge von M2 in mm
float ZLängeM3 = 0; // für die Berechnung des Maximalfahrweges von M3

void setup() {

}

void loop() {

g2 = g1 / 2.5;

ZLängeM3 = ZLängeM2 / 2.5;

}

vG

fredyxx

Sisor
30.04.2016, 06:45
Schreib Laenge statt Länge. Ä ist kein ASCII-Zeichen, der Compiler kann damit nicht umgehen.

fredyxx
30.04.2016, 07:32
Danke danke

i_make_it
30.04.2016, 07:45
"ä" und "Ä" sind zwar schon ASCII Zeichen, aber keine 7 Bit sondern 8 Bit ASCII Zeichen und somit Sonderzeichen.
Bei Bezeichnern hält man sich am besten an Kleinbuchstaben, Großbuchstaben und Ziffern ohne Umlaute (ä, ö, ü, ß).
Viele Compiler akzeptieren noch Unterstriche und Minus, aber sicherer ist man ohne.
ASCII Zeichentabelle ohne Steuerzeichen
http://www.pctipp.ch/typo3temp/pics/d66c597f27.jpg

ASCII Steuerzeichen für TELEX
https://web4.wzw.tum.de/dvs/edvgw/asciist.gif

7-Bit UASCII Zeichentabelle
http://openbook.rheinwerk-verlag.de/javainsel/bilder/04_001.png

Bitcodes
5-Bit CCITT-1: (ITA1) 5 Bit für Zeichen plus 2 Bit vorangestellt für Steuerzeichen

5-Bit CCITT-2: (TELEX Code) 5 Bit für Zeichen plus 2 Bit vorangestellt für Steuerzeichen. Un der UDSSR zum 3+5 Bit MTK-2 erweitert.

Diese 5-Bit Codes sind auch der Grund warum bei Lochstreifen die Transportlochung nicht in der Mitte der 8 Löcher ist, sondern 3+5 ist.

7-Bit ASCII: aus CCITT-2" hervorgegangen.

8-Bit EBCDIC: IBM Lockarten und Computer Code (entstanden aus dem 4-Bit BCD Code -> E-BCD-IC)

8-Bit ASCII: Erweiterung des 7-Bit ASCII um Sonderzeichen, und Graphik Symbole für Computer. (hier stammen die länderspezifischen Codepages von Microsoft her, da es für die mit dem 8. Bit codierten Zeichen 15 Varianten gibt)

8-Bit ANSI: Variante des ASCII Code, die mit dem 8. Bit codierten Zeichen stimmen nicht mit denen des 8-Bit ASCII überein. (Das ist der Grund warum es bei DOS die Änderungen in den Codepages gab)
http://www.pctipp.ch/typo3temp/pics/6bf18f36a8.jpg

21-Bit Unicode: Weltweit genormter Code nach ISO 10646.



(http://openbook.rheinwerk-verlag.de/javainsel/bilder/04_001.png)

Unregistriert
30.04.2016, 11:44
Fuer C halte ich dieses fuer massgebend:
http://www2.informatik.uni-halle.de/lehre/c/c27.html
Etwas weiter unten stehen die zugelassenen Zeichen für Namen

i_make_it
30.04.2016, 15:07
Spätestens wenn man mal mit Systemübergreifender Kommunikation anfängt, wird das Wissen um die verschiedenen Kodierungen, nicht nur für Bezeichner interessant.
Mit 8-Bit ASCII und ANSI habe ich das schon miterlebt.
Da wurden Namen übertragen. Bei allen Tests funktionierte das auch einwandfrei (man hatte nur die 7-Bit Kodierten Zeichen benutzt) im Einsatz ging das dann total in die Hose, da die aus einem ASCII codierendem System stammenden Namen natürlich im ANSI System die Binärzahlen für die entsprechenden Umlaut auf andere Zeichen gemapt haben.
Da braucht es nicht wie in meinem Fall Ein SAP R2 und SAP R3 System, da reicht auch ein Netzwerktauglicher Umweltsensor dessen Strings jemand in einem System mit Unicode verarbeiten will. Und ich gehe mal davon aus, das der TO sich im laufe der Zeit bestimmt weiterentwicken wird und eventuell ist Ihm dann dieser kurze Abriss ganz hilfreich um stundenlanges Suchen zu vermeiden.
In meinem Fall hatten die beiden Betriebsteams schon 2 Wochen gesucht.
Nachdem ich mir von beiden Seiten je eine Textdatei mit den selben Namen habe schicken lassen, hat es solange gedauert wie es braucht zwei mal Hexedit zu öffnen und in beiden Dateien den selben Umlaut anzeigen zu lassen um das Problem zu finden.
Der Parser der die Umlaute von ASCII auf ANSI umgesetzt hat war in 15 Minuten fertig.
Das geht aber nur wenn man weis das es verschiedene Kodierungen gibt und nicht in seine kleinen Welt gefangen bleibt.
Die Entscheidung ob meine Info als hilfreich oder übers Ziel hinausgeschossen zu betrachten ist überlasse ich dem TO.

Unregistriert
01.05.2016, 10:44
keine Umlaute und auch keine Sonderzeichen in C Bezeichnern (Funktions- und Variablen-Namen) verwenden,
sondern nur einfache Buchstaben (A-Z, a-z), Ziffern und Unterstrich,
keine Ziffern am Anfang,
Groß/Kleinschreibung beachten!
Genau, nur einfache Buchstaben und nicht die komplizierten wie Umlaute.