iOS標頭檔案中如何在巨集裡引用已有的巨集

穿山甲到底說了什麼發表於2018-12-19

一般我們在開發環境中經常會有這樣的需求,如果有不是很多的介面的話,一般會這樣寫

#define kLoginURLStr                @"http://test.yunlu6.com/api/v1/login"
#define kLogoutURLStr               @"http://test.yunlu6.com/api/v1/logout"
複製程式碼

但是 一般 公司 介面少則幾十個,多則上百個,要是將來改的話,會稍顯麻煩,且容易出錯,於是會有下面優化的寫法: #define kTestHostName @"test.yunlu6.com" #define kLoginURL @"" kTestHostName@"/api/v1/login" #define kLogoutURLStr @"" kTestHostName@"/api/v1/logout" 但是很多公司的伺服器環境經常會變動,因此,我們還需要考慮到切換域名的情況,於是下面就會寫出最終的寫法 #define kTestHostName @"test.yunlu6.com" #define kDevelopHostName @"develop.yunlu6.com" #define kHostName kDevelopHostName

#define kLoginURL                    @"" kHostName@"/api/v1/login"
#define kLogoutURLStr                @"" kHostName@"/api/v1/logout"
複製程式碼

以後就只需要更改這一行巨集就可以了 #define kHostName kDevelopHostName/kTestHostName/kOtherHostName

注:@"" kTestHostName@"/api/v1/login"中 kTestHostName前面必須要有空格用來區分字面量引號"和標誌符kTestHostName,否則在編譯時候會報錯, Invalid suffix on literal; C++11 requires a space between literal and identifier,好的,一切編譯正常!

相關文章