Załóżmy, że mam następujące makro:Jak przedefiniować makro używając jego poprzednią definicję
#define xxx(x) printf("%s\n",x);
Teraz w niektórych plików, które chcę użyć „lepszą” wersję tego makra bez zmiany jej nazwy. Nowa wersja bada funkcjonalność oryginalnej wersji i wykonuje więcej pracy.
To oczywiście daje mi ostrzeżenie o przerobie, ale dlaczego "xxx" nie zostało zadeklarowane w tym zakresie? Jak powinienem go poprawnie zdefiniować?
EDIT: według tego http://gcc.gnu.org/onlinedocs/gcc-3.3.6/cpp/Self_002dReferential-Macros.html powinno być możliwe
To strona makra autoreferencyjna opisuje zasady zapobieganie nieskończonej rekursji zastępowania makr. Nie oznacza to, że można zdefiniować makro, które oznacza więcej niż jedną rzecz. –