C preprocessor: bug or intentional deficiency?
    Thomas Johnsson 
    johnsson at chalmers.UUCP
       
    Wed Apr  3 16:38:26 AEST 1985
    
    
  
How do I get a C macro to define another macro? Or rather,
the expansion of a macro causes another macro to be defined.
For example,
	#define defineit(d) \
	#define d hello
The call to defineit
	defineit(hi)
would cause the definition
	#define hi hello
to be entered into the C preprocessor translation table.
Except that it does not seem to work (no matter what permutation
of backslashes and hashes I try :-)
It's clearly a very useful thing to be able to do!
Don't be misled by the triviality of my example above;
Consider the following example, which is more in the spirit of
what I'm trying to do:
	#define defnode2(name) \
	#define make_/**/name(a,b) \
		....		   \
	#define is_/**/name(p) \
		....
Thus I want 
	defnode2(banana)
to mean exactly the same as
	#define make_banana(a,b) \
		....		   \
	#define is_banana(p) \
		....
That this does not work, is it a bug in the preprocessor,
or is it just not supposed to work? If so, why not?
-- 
____________________________________________________________
Thomas Johnsson		..decvax!mcvax!enea!chalmers!johnsson
Chalmers University of Technology, Goteborg, Sweden
    
    
More information about the Comp.lang.c
mailing list