Can you do something like this with a macro in C?
#define SUPERMACRO(X,Y) #define X Y
then
SUPERMACRO(A,B) expands to #define A B
I have a feeling not because the preprocessor only does one pass.
Official gcc only. No third-party tools please.
Can you do something like this with a macro in C?
#define SUPERMACRO(X,Y) #define X Y
then
SUPERMACRO(A,B) expands to #define A B
I have a feeling not because the preprocessor only does one pass.
Official gcc only. No third-party tools please.
Macros can't expand into preprocessing directives. From C99 6.10.3.4/3 "Rescanning and further replacement":
The resulting completely macro-replaced preprocessing token sequence is not processed as a preprocessing directive even if it resembles one,
You cannot define macros in other macros, but you can call a macro from your macro, which can get you essentially the same results.
#define B(x) do {printf("%d", (x)) }while(0)
#define A(x) B(x)
so, A(y) is expanded to do {printf("%d", (y)) }while(0)
No. The order of operations is such that all preprocessor directives are recognized before any macro expansion is done; thus, if a macro expands into something that looks like a preprocessor directive, it won't be recognized as such, but will rather be interpreted as (erroneous) C source text.
Sorry, you cannot. You can call other macros in macros but not define new ones.
You could try running it through with only the preprocess option, then compiling with the preprocessed file.
You might do this though: #define SUPERMACRO(X,Y) define X Y
Then you can use your editors macro-expansion functionality and paste in the missing #.
Or even better: Use a different, more powerful string-processing language as your preprocessor.