As in the possible dup I linked, you need two more levels of macros because you want to stringify a macro expansion:
#define VERSION 0.3.2
#define StringifyWithoutExpandingMacros(x) #x
#define Stringify(x) StringifyWithoutExpandingMacros(x)
NSLog(@"VERSION = %@", @StringifyWithoutExpandingMacros(VERSION));
// output: VERSION = VERSION
NSLog(@"VERSION = %@", @Stringify(VERSION));
// output: VERSION = 0.3.2
Note that you can just stick an @
in front of the macro invocation. It doesn't need to be inside the macro. You can put it in the macro if you want, though:
#define NSStringifyWithoutExpandingMacros(x) @#x
#define NSStringify(x) NSStringifyWithoutExpandingMacros(x)
NSLog(@"VERSION = %@", NSStringify(VERSION));
// output: VERSION = 0.3.2