Tôi đang cố gắng tìm ra cách tôi có thể nối một chuỗi #define
int #define
' với một chuỗi' d bằng cách sử dụng C Preprocessor. Trình biên dịch của tôi là GCC 4.1 trên CentOS 5. Giải pháp cũng sẽ hoạt động cho MinGW.
Tôi muốn nối số phiên bản vào một chuỗi, nhưng cách duy nhất tôi có thể làm cho nó hoạt động là tạo một bản sao của số phiên bản được định nghĩa là chuỗi.
Điều gần nhất tôi có thể tìm thấy là một phương pháp trích dẫn các đối số macro, nhưng nó không hoạt động đối với #define
s
Điều này không hoạt động.
#define MAJOR_VER 2
#define MINOR_VER 6
#define MY_FILE "/home/user/.myapp" #MAJOR_VER #MINOR_VER
Nó cũng không hoạt động nếu không có #
s vì các giá trị là số và nó sẽ mở rộng thành C"/home/user/.myapp" 2 6
không hợp lệ .
Điều này hoạt động, nhưng tôi không thích có các bản sao của phiên bản được xác định bởi vì tôi cũng cần chúng dưới dạng số.
#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