通常咱們在開發環境中常常會有這樣的需求,若是有不是不少的接口的話,通常會這樣寫api
#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/kOtherHostNameide
注:@"" kTestHostName@"/api/v1/login"中 kTestHostName前面必需要有空格用來區分字面量引號"和標誌符kTestHostName,不然在編譯時候會報錯, Invalid suffix on literal; C++11 requires a space between literal and identifier,好的,一切編譯正常!優化