Próbuję dowiedzieć się, w jaki sposób można złączyć się #define
„d int do #define
” ciąg d pomocą C preprocesora. Mój kompilator to GCC 4.1 na CentOS 5. Rozwiązanie powinno również działać dla MinGW.Łączy int na ciąg przy użyciu C preprocesor
Chciałbym dołączyć numer wersji na sznurku, ale tylko w ten sposób mogę zmusić go do pracy jest, aby kopia numeru wersji określa jako ciągi.
Najbliższy rzeczą mogłyby znaleźć był sposób przytoczyć argumenty makr, ale to nie działa dla #define
s
To jest nie działa.
#define MAJOR_VER 2
#define MINOR_VER 6
#define MY_FILE "/home/user/.myapp" #MAJOR_VER #MINOR_VER
To nie działa bez #
s albo ponieważ wartości są liczbami i byłoby rozszerzyć do "/home/user/.myapp" 2 6
, który nie jest ważny C.
To działa, ale nie lubię posiadające kopie wersji definiuje bo trzeba je jako numery, jak również.
#define MAJOR_VER 2
#define MINOR_VER 6
#define MAJOR_VER_STR "2"
#define MINOR_VER_STR "6"
#define MY_FILE "/home/user/.myapp" MAJOR_VER_STRING MINOR_VER_STRING
Możliwy duplikat [Konwersja tokenu preprocesora na ciąg] (http://stackoverflow.com/questions/240353/convert-a-preprocessor-token-to-a-string) –