Macros in macro objects never expand when defining a macro — only when using a macro. This means that the definition of NEW_DEFINE not "ABC" "DEF" , this is exactly what appears on the line #define: FINAL_DEFINE "DEF" .
Therefore, when you use FINAL_DEFINE , it expands to NEW_DEFINE , which then expands to FINAL_DEFINE "DEF" . At this point, it will not recursively extend FINAL_DEFINE (since this will lead to an infinite loop), so the extension no longer occurs.
source share