在 C 中,任何两个一起列出的常量字符串都被认为是一个字符串,因此以下任何一个都是等价的:
a = "abc123xyz";
b = "abc" "123" "xyz";
#define FOO "123"
c = "abc" FOO "xyz";
所以,你可以像这样做你想做的事:
#define BAR "whatever"
#define PlacesURL "https://maps.googleapis.com/maps/api/place/search/xml?location=34.0522222,-118.2427778&radius=500&types=" BAR "&sensor=false&key=MyAPIKey"
但是,这似乎是一件很奇怪的事情?您是否尝试在运行时粘贴栏名称?如果是这样,您需要使用 sprintf 来完成(注意%s
中的PlacesURL
):
#define PlacesURL "https://maps.googleapis.com/maps/api/place/search/xml?location=34.0522222,-118.2427778&radius=500&types=%s&sensor=false&key=MyAPIKey"
char *get_url(char *bar) {
char url[1000];
sprintf (url, PlacesURL, bar);
return strdup(url);
}
然后调用函数必须free(url)
在它完成时。