嵌套#defines来构建URL?

时间:2012-03-24 17:09:52

标签: objective-c c-preprocessor

我希望将一些网址设为硬编码#define。其中一些需要用户名。我正在寻找以下可能性:

#define kUserName John
#define kUserInfoURL(USERNAME) [NSURL URLWithString:@"http://a.com/USERNAME"]

可以这样做吗?

1 个答案:

答案 0 :(得分:2)

可以这样做,它叫做 stringification see link):

#define kUserInfoURL(USERNAME) [NSURL URLWithString:@"http://a.com/" #USERNAME]

但是,这只适用于硬编码的用户名。如果传递变量,您将获得变量的名称,而不是其内容。 你为什么不创建一个会让你回归的方法或函数呢?

示例:


#define kBaseUrl @"http://a.com"

- (NSURL*)createUrlForUser:(NSString*)username {
   NSString* url = [NSString stringWithFormat:@"%@/%@", kBaseUrl, username];
   return [NSURL URLWithString:url];
}