Hallo, folgendes ist gegeben #define VERSION_HB 3 #define VERSION_LB 0 #define VERSION_STRING "VERSION_HB.VERSION_LB" Natürlich ist jetzt der VERSION_STRING nicht "3.0" aber wie und geht dies überhaupt?
Probier mal
1 | #define _STR(s) _VAL(s)
|
2 | #define _VAL(s) #s
|
3 | |
4 | #define VERSION_HB 3
|
5 | #define VERSION_LB 0
|
6 | |
7 | #define VERSION_STRING _STR(VERSION_HB)"."_STR(VERSION_LB)
|
Das funktioniert leider nicht. Als String kommt dann der Name der defines: VERSION_HB.VERSION_LB und nicht 3.0 Danke
Noch mal komplett:
1 | #include <stdio.h> |
2 | |
3 | #define _STR(s) _VAL(s)
|
4 | #define _VAL(s) #s
|
5 | |
6 | #define VERSION_HB 3
|
7 | #define VERSION_LB 0
|
8 | |
9 | #define VERSION_STRING _STR(VERSION_HB)"."_STR(VERSION_LB)
|
10 | |
11 | int main() |
12 | {
|
13 | puts(VERSION_STRING); |
14 | |
15 | return 0; |
16 | }
|
Bei mir steht da 3.0
Hallo, nochmals danke für deine Antwort. Du hast natürlich recht, der gcc macht das auch, allerdings hat der mcc18 (C18 Compiler von Microchip für pic18) seine Probleme damit. Gruß
Das ist dann aber mehr ein Problem vom cpp18 (dem Preprozessor).
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.