Önişlemcinin nasıl çalıştığına dair zihinsel modelim görünüşte eksiktir ve bu beni çıldırtıyor.Önişlemci jetonu genişletme
İki belirteç birleştirmek istiyorum, ancak ikinci belirteci önce genişletilmelidir. İşte
#define ANSWER 42
#define FOO foo_ ## ANSWER
, FOO
foo_ANSWER
genişler, ama foo_42
olmak istiyorum. Bu yüzden bu şekilde birleştirme önce argümanlar artıracağı umuduyla bir MERGE
makro tanımlamak:
#define MERGE(x, y) x ## y
#define BAR MERGE(bar_, ANSWER)
Ama BAR
hala bar_ANSWER
yerine bar_42
genişler.
#define HELPER(x, y) MERGE(x, y)
#define BAZ HELPER(baz_, ANSWER)
Ve şimdi BAZ
başarıyla baz_42
şekilde genişletilir: Ben başka makro HELPER
tanımlar. Şu anda bu bana sihir gibi geliyor.
Bu davranışı bana açıklayan var mı? Genişleme kuralları tam olarak nasıl çalışır?
Ayrıca, aynı sorunun olası bir yinelenen sorusunu da yaptığımı söylemek isterim. Acaba bu davranış neden açık bir şekilde belgelenmiyor. Önişlemcinin çalıştığı algoritmayı kastediyorum. –
@sandundhammika: Çok açık bir şekilde tanımlanmamış davranış köşeleri olmasına rağmen, 6.10.3. –