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.
Gut, Dankeschön für die schnelle Hilfe :)
Gast
#3932071
..wenn Du
1 | |
durch
1 | |
und
1 | |
durch
1 | |
2 | |
3 | |
sowie
1 | |
durch
1 | |
2 | |
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
Gast
#3932178
Meinten Sie: Herrlichkeit
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.
