On 12/31/2011 07:50 AM, Walter Bright wrote:
On 12/30/2011 10:50 PM, Walter Bright wrote:
On 12/30/2011 8:34 PM, Timon Gehr wrote:
On 12/31/2011 05:19 AM, Walter Bright wrote:
On 12/30/2011 8:02 PM, Timon Gehr wrote:
On 12/31/2011 04:50 AM, Walter Bright wrote:
Because inevitably someone will write:
#define FOO a + FOO
and expect it to work (the correct expansion would be "a + FOO",
not a
stack overflow). The C preprocessor works this way, as do makefile
macros, as Ddoc does.
Makes sense, but why is it an issue if expansion is explicit?
enum FOO = q{a + FOO};
mixin(FOO);
Because the expanded text is then rescanned for further macro
replacement.
Yes, but in q{a + FOO} there is none.
#define FOO a+Foo
FOO;
What is the text after macro expansion?
Blast, I meant
#define FOO a+FOO
FOO;
FOO; -> a + FOO;
mixin(FOO~";"); -> a + FOO;
The two do the same thing.