System programming in D (Was: The God Language)

Walter Bright newshound2 at digitalmars.com
Fri Dec 30 22:50:02 PST 2011


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?


More information about the Digitalmars-d mailing list