Morgen,
weis Jemand wieso diese Makros nicht funktionieren?
Die Variablen Brightness und Channel stehen in einer Methode (sind die
Parameter der Methode).
--> void Set_Channel_Brightness ( uint8_t Channel, uint16_t Brightness )
{
...
}
Das Argument von #if muss zur Kompilezeit bekannt sein, sind sie das?
Ja, ich rufe die Methode in der Main-Methode auf, gleich am Anfang. Dann gebe ich zum Beispiel 5000 für Brightness ein und 50 für Channel. Es kommt keine Fehlermeldung zurück...
Christian Karle schrieb: > Ja, ich rufe die Methode in der Main-Methode auf, gleich am > Anfang. Dann gebe ich zum Beispiel 5000 für Brightness ein und 50 für > Channel. Nein, das sind Variablen und der Präprozessor kennt den Wert nicht. Den Inhalt von Variablen kannst du erst zur Laufzeit überprüfen.
Christian Karle schrieb: > Es kommt keine Fehlermeldung zurück... Das ist kein Kriterium. Der Präprozessor ist bekannt dafür, bei Rechenausdrücken in #if noch im grössten Blödsinn einen Sinn zu erkennen. So beispielsweise wenn er Namen darin nicht kennt. Weil er, wie de Name schon sagt, (formell) vor dem Compiler vorneweg läuft und deshalb dessen Variablen nicht kennt.
Ok, Danke. Gibt es trotzdem eine Möglichkeit über diesen Weg, dem Benutzer eine solche Eingabe zu "verbieten" ?
Nein. Nicht auf diesem Weg, also nicht mit Präprozessorbefehlen.
..wenn Du
1 | #if |
durch
1 | if ( |
und
1 | #error |
durch
1 | ) |
2 | {
|
3 | traceError( |
sowie
1 | #endif |
durch
1 | ); |
2 | return errorCondition; |
3 | } |
..ersetzt dann geht das auch zur Laufzeit. traceError und errorCondition (sowie der zugehörige Rückgabetyp) müssen latürnich noch richtig(tm) hingeschreiben werden. HTH
"Ungültige Hellichkeit..." Sei froh, dass das nicht angezeigt wird. mfg.
Sry, ich bin wohl etwas müder, als ich dachte... Hab die halbe Nacht durchgearbeitet :D
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.
