ฉันกำลังพยายามหาวิธีเชื่อมสตริง#define
'd int กับ a #define
' d โดยใช้C Preprocessor คอมไพเลอร์ของฉันคือ GCC 4.1 บน CentOS 5 โซลูชันนี้ควรใช้ได้กับ MinGW ด้วย
ฉันต้องการต่อท้ายหมายเลขเวอร์ชันลงในสตริง แต่วิธีเดียวที่ฉันจะทำให้มันใช้งานได้คือการทำสำเนาหมายเลขเวอร์ชันที่กำหนดเป็นสตริง
สิ่งที่ใกล้เคียงที่สุดที่ฉันสามารถหาได้คือวิธีการอ้างอาร์กิวเมนต์มาโคร แต่ใช้ไม่ได้กับ#define
s
สิ่งนี้ไม่ได้ผล
#define MAJOR_VER 2
#define MINOR_VER 6
#define MY_FILE "/home/user/.myapp" #MAJOR_VER #MINOR_VER
มันไม่ทำงานโดยไม่ต้อง#
s ทั้งเพราะค่าจะเป็นตัวเลขและมันจะขยายตัวออกไป"/home/user/.myapp" 2 6
ซึ่งไม่ถูกต้องC
วิธีนี้ใช้งานได้ แต่ฉันไม่ชอบให้สำเนาของเวอร์ชันกำหนดเพราะฉันต้องการให้เป็นตัวเลขเช่นกัน
#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