在編寫程序的時候,經常會用到VERSION,用來表示程序的版本號 有的時候我們還希望里面加個日期,例如: "System V2.0.1.2017.9.13"
又有的時候我們只想讀出數字版本號,例如2, 0, 1,有的時候又想如果想將里面的2, 0, 1這3 個數字提取出來,該怎么做呢?
通常做法是這樣的: - #define MAINVER 2
- #define SUBVER1 0
- #define SUBVER2 1
-
- #define VERSTR "System V2.0.1.2017.9.13"
復制代碼
如果想修改下版本號,即需要修改前面3 個數字宏,又要修改后面的字符串宏,最后還得將日期寫上;
那有沒有什么辦法將工作量減小到最少,只要更改前面3 個宏就可以了呢? 答案當然是可以的了,請看: - #define MAINVER 2
- #define SUBVER1 0
- #define SUBVER2 1
-
- #define STR(s) #s
- #define VERSION(a,b,c) "System V" STR(a) "." STR(b) "." STR(c) " "__DATE__
- //#define VERSTR "System V2.0.1.2017.9.13"
-
-
- void main()
- {
- printf("%s\n",VERSION(MAINVER,SUBVER1,SUBVER2));
- getch();
- }
復制代碼
說明: 這個日期是當前文件被編譯的生成日期,如果您沒有修改這個文件,那日期是不會變的,我想您修改了代碼也一定 不會忘記修改下版本號,所以這個日期字符串肯定是當前的日期;還有一點,這個日期的格式我目前找不到自定義的辦法 如果有知道的歡迎留言告訴我~
|