SORU
1 AĞUSTOS 2012, ÇARŞAMBA


Aşırı Sayıda Bağımsız değişken üzerinde Makro

İki makrolar FOO2 FOO3:

#define FOO2(x,y) ...
#define FOO3(x,y,z) ...

Yeni bir makro aşağıdaki gibidir: FOO tanımlamak istiyorum

#define FOO(x,y) FOO2(x,y)
#define FOO(x,y,z) FOO3(x,y,z)

Ama bu makrolar sayıda bağımsız değişken yüklenme yapmayın çünkü işe yaramıyor.

Olmaksızın değiştirme FOO2 FOO3, orada bir şekilde tanımlamak için bir makro FOO (kullanarak __VA_ARGS__ veya başka bir şekilde) aynı etki gönderilmesi FOO(x,y) FOO2 FOO(x,y,z) FOO3?

CEVAP
1 AĞUSTOS 2012, ÇARŞAMBA


Basit olarak:

#define GET_MACRO(_1,_2,_3,NAME,...) NAME
#define FOO(...) GET_MACRO(__VA_ARGS__, FOO3, FOO2)(__VA_ARGS__)

Eğer öyleyse bu makrolar varsa:

FOO(World, !)         # expands to FOO2(World, !)
FOO(foo,bar,baz)      # expands to FOO3(foo,bar,baz)

Eğer dördüncüyü ister

#define GET_MACRO(_1,_2,_3,_4,NAME,...) NAME
#define FOO(...) GET_MACRO(__VA_ARGS__, FOO4, FOO3, FOO2)(__VA_ARGS__)

FOO(a,b,c,d)          # expeands to FOO4(a,b,c,d)

FOO2, FOO3 FOO4 tanımladığınız doğal olarak, çıktı tanımlanmış makrolar olanlar ile değiştirilecektir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • InfinityWard

    InfinityWard

    19 EYLÜL 2006
  • Joe DiFeo

    Joe DiFeo

    7 AĞUSTOS 2012
  • SamsTech

    SamsTech

    4 NİSAN 2014