Thursday, 15 September 2011

c - Placing a preprocessor directive inside a string literal? -



c - Placing a preprocessor directive inside a string literal? -

i'm trying utilize #define define string literal (a filepath in case), cannot path #define'd element. in short, i'd this:

#define x /var/stuff #define y "x/stuff.txt"

to give me y "/var/stuff/stuff.txt". possible do? beforehand.

edit: alternatively, concat 2 literals one?

#define x "/var/stuff" #define y x"/stuff.txt"

not way have it, no -- macro replacement not happen within string literals.

you can, however, paste string pieces:

#define str(x) #x #define expand(x) str(x) #define x /var/stuff #define y expand(x) "/stuff.txt"

quick demo code this:

#include <iostream> int main(){ std::cout << y; }

c gcc preprocessor

No comments:

Post a Comment