Gast
#4114860
Hallo zusammen! Ich hoffe ich bin hier richtig? Meine IDE ist MPlab X mit dem XC8 Compiler (Free-Version). Controller: PIC16F1789 (was aber erst mal keine Rolle spielen dürfte) folgenden Code habe ich in einer Header-Datei: #define TMR_TEST 27.2 #define TMR_DEVIDER ((int)TMR_TEST) #if TMR_DEVIDER < 1 #define RTCC_DEVIDER RTCC_DIV_1 #define DV 0 #elif TMR_DEVIDER < 2 #define RTCC_DEVIDER RTCC_DIV_2 #define DV 1 #elif TMR_DEVIDER < 4 #define RTCC_DEVIDER RTCC_DIV_4 #define DV 2 #elif TMR_DEVIDER < 8 #define RTCC_DEVIDER RTCC_DIV_8 #define DV 3 #elif TMR_DEVIDER < 16 #define RTCC_DEVIDER RTCC_DIV_16 #define DV 4 #elif TMR_DEVIDER < 32 #define RTCC_DEVIDER RTCC_DIV_32 #define DV 5 #elif TMR_DEVIDER < 64 #define RTCC_DEVIDER RTCC_DIV_64 #define DV 6 #elif TMR_DEVIDER < 128 #define RTCC_DEVIDER RTCC_DIV_128 #define DV 7 #elif TMR_DEVIDER < 256 #define RTCC_DEVIDER RTCC_DIV_256 #define DV 8 #else #error #endif Ausgeführt wird hier der #error obwohl der CAST von 27.2 (float) nach int 27 ergibt. Eigentlich muss #elif TMR_DEVIDER < 32 ausgeführt werden. Ändere ich es wie folgt: #define TMR_TEST 27 #define TMR_DEVIDER TMR_TEST wird #elif TMR_DEVIDER < 32 ausgeführt. Kann mir das jemand erklären? Vielen Dank! Gruß Florian