Tôi đang cố gắng tìm ra cách tôi có thể nối một chuỗi d #define
'd int đến một #define
' bằng cách sử dụng Bộ xử lý trước C. Trình biên dịch của tôi là GCC 4.1 trên CentOS 5. Giải pháp cũng nên làm việc cho MinGW.Nối chuỗi int bằng chuỗi bằng cách sử dụng Bộ tiền xử lý trước
Tôi muốn nối thêm một 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 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 được một phương pháp trích lập luận vĩ mô, nhưng nó không làm việc cho #define
s
Đây là không hoạt động.
#define MAJOR_VER 2
#define MINOR_VER 6
#define MY_FILE "/home/user/.myapp" #MAJOR_VER #MINOR_VER
Nó không làm việc mà không có sự #
s hoặc vì giá trị là số và nó sẽ mở rộng tới "/home/user/.myapp" 2 6
, đó là không hợp lệ C.
Tính năng này hoạt động, nhưng tôi không thích 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 làm 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
Bản sao có thể có của [Chuyển đổi mã thông báo tiền xử lý thành chuỗi] (http://stackoverflow.com/questions/240353/convert-a-preprocessor-token-to-a-string) –