Right way to concatenate an URL as a preprocessor directive

I would like to make the definition of an URL user friendly using compiler directives, so only the parameters mus be entered:

#define OPEN_WEATHER_MAP_APP_ID  "208085abb5a3859d1e32341d6e1f9079"
#define OPEN_WEATHER_MAP_LOCATION_ID "2928810"
#define OPEN_WEATHER_MAP_LANGUAGE "de"
#define OPEN_WEATHER_MAP_UNITS "metric"

#define OPEN_WEATHER_MAP_URL  "http://api.openweathermap.org/data/2.5/weather?id=" ## OPEN_WEATHER_MAP_LOCATION_ID ## "&units=" ## OPEN_WEATHER_MAP_UNITS ## "&appid=" ## OPEN_WEATHER_MAP_APP_ID ## "&lang=" ## OPEN_WEATHER_MAP_LANGUAGE

but the concatenation does not succeed:

pasting ""http://api.openweathermap.org/data/2.5/weather?id="" and "OPEN_WEATHER_MAP_LOCATION_ID" does not give a valid preprocessing token

What did I make wrong?
Thank you...

The “##” operator is for macro arguments, not plain definitions.
Plain strings will be concatenated just by putting them next to each other:

#define FIRSTSTRING “who is on first”
#define SECONDSTRING “what is on second”
#define LONGSTRING (“first is” FIRSTSTRING “and then there is “ SECONDSTRING)

Thank you!