जाँच यह एक दुविधा यह है प्रकार की तरह अतिरिक्त लाभ के साथ, C++ 0x Variadic Templates के साथ कवर किया जा सकता है। मुझे एक उदाहरण देने दें। मैं 1 9 85 के आसपास differential execution की तकनीक पर ठोकर खाई, और मुझे लगता है कि यह प्रोग्रामिंग उपयोगकर्ता इंटरफेस के लिए वास्तव में एक अच्छा टूल है।
void Foo(..args..){
x = y;
if (..some test..){
Bar(arg1, ...)
}
while(..another test..){
...
}
...
}
और mucks इस तरह नियंत्रण संरचना के साथ:
void deFoo(..args..){
if (mode & 1){x = y;}
{int svmode = mode; if (deIf(..some test..)){
deBar(((mode & 1) arg1 : 0), ...)
} mode = svmode;}
{int svmode = mode; while(deIf(..another test..)){
...
} mode = svmode;}
...
}
, एक बहुत अच्छी तरह से अब जब कि ऐसा करने के लिए हो गया होता के लिए एक पार्सर लिखने के लिए मूल रूप से, यह इस तरह से सरल संरचित कार्यक्रमों लेता है सी या जो भी मूल भाषा है, और फिर पार्स पेड़ पर चलें, जो कोड मैं चाहता हूं उसे उत्पन्न करता हूं। (जब मैंने इसे लिस्प में किया था, तो वह हिस्सा आसान था।)
लेकिन कौन सी, सी ++, या जो कुछ भी पार्सर लिखना चाहता है?
तो, बजाय, मैं सिर्फ मैक्रो ताकि मैं इस तरह कोड लिख सकते हैं लिखें:
void deFoo(..args..){
PROTECT(x = y);
IF(..some test..)
deBar(PROTECT(arg1), ...)
END
WHILE(..another test..)
...
END
...
}
हालांकि, जब मैं सी # में ऐसा करते हैं, उनके ज्ञान में किसी निर्णय लिया मैक्रो बुरा थे, और मैं डॉन एक सी # पार्सर लिखना नहीं चाहता, इसलिए मुझे हाथ से कोड पीढ़ी करना होगा। यह शाही दर्द है, लेकिन इन चीजों को कोड करने के सामान्य तरीके की तुलना में यह अभी भी इसके लायक है।
+1 धन्यवाद माइक। यह सबसे अच्छा जवाब है :) – Viet