我見過this topic它做介紹了「字符串」操作:C預處理器:用前導零對字符串int進行處理?
#define STR_HELPER(x) #x
#define STR(x) STR_HELPER(x)
#define MAJOR_VER 2
#define MINOR_VER 6
#define MY_FILE "/home/user/.myapp" STR(MAJOR_VER) STR(MINOR_VER)
是否有可能與前導零字符串化?比方說,我MAJOR_REV需要在這種情況下,兩個字符「02」和MINOR_REV 4個字「0006」 如果我做的:
#define MAJOR_VER 02
#define MINOR_VER 0006
的值將其他地方的應用被視爲八進制,這我不不想要。
我的直覺是這將是足夠的硬度,即使升壓::預處理器,它是不是真的值得做。將「MAJOR_VER_STR」和「MINOR_VER_STR」定義爲帶前導零的字符串。你可以創建一個腳本來設置主版本和次版本以及匹配的字符串:'setversion --major = 2 --minor = 7 header.h'這個工作。 – 2015-02-17 21:39:20
它可以用Boost.Preprocessor完成,但我相信你必須配合「插槽」才能做到這一點。如果初始數字格式不同,如主版本10的'#define MAJOR_VER(1)(0)',則可以更簡單地完成。 – 2015-02-18 01:49:38
您是否需要使用預處理器?你不能爲它編寫常規的C代碼嗎?對不起,如果這是一個愚蠢的問題。 – 2015-02-18 09:27:39