Archiv verlassen und diese Seite im Standarddesign anzeigen : illegal operator '=' in #if/#elsif
Rob_Oter
21.02.2005, 11:42
Warum erzeugt folgender code...
#ifndef __CHECK_VAR_C
#define __CHECK_VAR_C
#define CHECK_VAR = 1 // 0 = Ignorieren; 1 = Korrigieren; 2 = Abbrechen
#include <ISPBoard.c><ispboard.c>
#if CHECK_VAR == 1
#define CHECK_VAR_MASK(val,mask) val &= mask;
#define CHECK_VAR_RANGE(val,min,max) if (val < min) val = min; else if (val > max) val = max;
#elif CHECK_VAR == 2
#define CHECK_VAR_MASK(val,mask) if (val & ~mask) exit(ERROR_RANGE);
#define CHECK_VAR_RANGE(val,min,max) if (val < min || val > max) exit(ERROR_RANGE);
#else
#define CHECK_VAR_MASK(val,mask)
#define CHECK_VAR_RANGE(val,min,max)
#endif
#endif
... folgende Fehlermeldung beim kompilieren?
check_var.c 8: Error: illegal operator '=' in #if/#elsif
check_var.c 15: Error: illegal operator '=' in #if/#elsif
zum zweiten: (wenn ich die ganzen #if/#elif/#else geschichten auskommentiere)
in ISPBoard.c wird die Funktion void exit(uchar state); definiert. Wieso motzt der Kompiler trotzdem, wenn ich irgendwo eines der Macro's anwende, dass "Warning: missing prototype for function 'exit()'"?
Ich bin ratlos...</ispboard.c>
= zuweisung
== vergleich
auch gestern daran gesucht und gefunden c ist nicht gleich basic
#ifndef __CHECK_VAR_C
#define __CHECK_VAR_C
#define CHECK_VAR = 1 // 0 = Ignorieren; 1 = Korrigieren; 2 = Abbrechen
#include <ISPBOARD.C>
#if CHECK_VAR == 1
#define CHECK_VAR_MASK(val,mask) val &= mask;
#define CHECK_VAR_RANGE(val,min,max) if (val < min) val = min; else if (val > max) val = max;
#elif CHECK_VAR == 2
#define CHECK_VAR_MASK(val,mask) if (val & ~mask) exit(ERROR_RANGE);
#define CHECK_VAR_RANGE(val,min,max) if (val < min || val > max) exit(ERROR_RANGE);
#else
#define CHECK_VAR_MASK(val,mask)
#define CHECK_VAR_RANGE(val,min,max)
#endif
#endif
richtig
falsch
alle funtionen müssen mindestens eine leereparameterzuweisunfg enthalten.
jede funktion endet mit parameterübergabe . willst du keine übergen must du mit () die funkion abschließen
Stichwort Funktionen in C
in C ist alles eine Funktion !
Rob_Oter
21.02.2005, 12:54
ach, jetzt seh' ich's erst... man bin ich bl(ö|in)d!!! Ich hab den Fehler immer beim #if gesucht, dabei hab ich schon bei der definition den fehler gemacht... danke! danke! danke! Überigens mit Basic hab ich nichts am hut... Perl ist meine Lieblingssprache ;)
Und weiss noch jemand was zu zweiten?
programmierst du c oder basic oder mixed ?
Rob_Oter
21.02.2005, 13:04
c und etwas assembler für mikroprozessoren (blutiger anfänger)
perl für den rest (darin bin ich profi ;-) )
php für's web *würg*
kleines Beispiel
#include<STANDARTIO.H>
main()
{
int i;
printf ("Even Numper Odd Number \n");
for (i =0 ; i<10; i++)
if (i%2 == 0)
printf("%d,i);
else
printf("%14d\n,i);
return 0;
}
() funktionsende ohne parameterübergabe
= zuweisung
== vergleich
ach, jetzt seh' ich's erst... man bin ich bl(ö|in)d!!! Ich hab den Fehler immer beim #if gesucht, dabei hab ich schon bei der definition den fehler gemacht... danke! danke! danke! Überigens mit Basic hab ich nichts am hut... Perl ist meine Lieblingssprache ;)
Und weiss noch jemand was zu zweiten?
Deine Fehler kenne ich als Basic-Fan habe ich die selben gemacht. Aber nicht weil ichs nicht wußte sondern weil ichs gewohnt war.
c und etwas assembler für mikroprozessoren (blutiger anfänger)
perl für den rest (darin bin ich profi ;-) )
php für's web *würg*wenn ich damit anfang zähl ich auf dich!
sorry hab auch mist gelesen aber es bleibt bei 5 und acht gehört ein je = hin korrigeire es
so jetz bin ich auch vollkommen konfus am besten du postest noch mal wenns läuft
Rob_Oter
21.02.2005, 19:29
so jetz bin ich auch vollkommen konfus ich auch ;)
Du hast deine Korrektur des Fehlers weg korrigiert... Der 1. Fehler war nur das Gleichzeichen in Zeile 4: da gehört keins hin!
#define CHECK_VAR 1
Aber für das zweite Problem hab ich noch keine Lösung...
c und etwas assembler für mikroprozessoren (blutiger anfänger)
perl für den rest (darin bin ich profi ;-) )
php für's web *würg*
wenn ich damit anfang zähl ich auf dich! Wenn ich Zeit habe, helf' ich gerne. Ansonsten kann ich perlboard.de und php-board.de sehr empfehlen!
Rob_Oter
21.02.2005, 19:31
Wie kommst du eigentlich auf Basic? Ich hab seit sicher 15 Jahren kein Basic mehr programmiert... ;)
ich hab mal
Sehr viel und komplex in Basic programmiert und im Pc 8 virtuelle Laufwerke für meine realen 8 bit atari gehabt über com 1 und ie waen schneller als ein reales laufwerk xf555
auf dem atari ne eigene 80Zeichen Textverarbeitung like minword und alles in Basic.
Hab mich zwar auch auf C und Pascal sowie C++ versucht, naja geht auch. Aber es gibt eigentlich nur 2 nötige Stufen Assembler und Basic. Damit läßt sich alles machen und man muß nicht ständig 3mal um die Ecke und Hundert Liberys auswendig kennen. Naja und Html ist dann eher Fleiß als alles Andere.
ok bei AVRs erlaub ich mir jetz auch ah bisserl mehr C.
Und da passiert mir halt auch" if a=b " was natürlich murks ist. Aber man schreibt halt immer wie ma es gewohnt iss.
Um Fehler bei sowas wie
if (var == 0)
zu vermeiden, gewöhnt man sich einfach ein bißchen um und schreibt:
if (0 == var)
schon motzt der Compiler, wenn man versehentlich "=" statt "==" schreibt, weil er der linken Seite (der Null) nichts zuweisen kann.
Powered by vBulletin® Version 4.1.12 Copyright ©2012 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.