अगर यह संभव है एक मैक्रो जो इस तरह बर्ताव करता है लिखने के लिए मैं सोच रहा था बिना कहा जा सकता है #define:सी पूर्वप्रक्रमक: मैक्रो कोष्ठकों
void Func(int x)
{
printf("%d",x);
}
#define func Func x //or something
int main()
{
func 10; //<---- remove parenthesis
}
इस मामले में, func
असली समारोह को इंगित करेगा Func
, और 10 ब्रांड्स के बिना इसके तर्क होंगे।
मैं सी ++ में लेकिन सी में new
ऑपरेटर के लिए कुछ इसी तरह प्राप्त करने के लिए कोशिश कर रहा हूँ
उदाहरण:
class Base* b = new(Base);
इस मामले में, class
struct
के लिए एक मैक्रो है, new
एक समारोह है जो फ़ंक्शन पॉइंटर लेता है, और Base
एक ऐसा फ़ंक्शन है जो struct Base
के लिए मेमोरी आवंटित करता है।
मैं कुछ इस तरह के कोड के पुनर्लेखन के लिए करना चाहते हैं: मुझे नहीं लगता कि आप कर सकते हैं करते हैं
class Base* b = new Base;
कौन सा संभव हो जाएगा अगर मैं एक मैक्रो :)
एक मैक्रो पैरामीटर कोष्ठक में हो नहीं करना चाहिए? – Matso
ठीक है, उन "फ़ंक्शन मैक्रोज़" में सामान्य फ़ंक्शन सिंटैक्स होता है, जैसे '#define func (x) Func (x) '। कॉल सामान्य कार्य की तरह होगा, उदा। 'समारोह (10)'। क्या तुम यही चाहते हो? –
@ एहसान यह एक सी ++ प्रश्न नहीं है, इसकी शुद्ध सी है और प्रीप्रोसेसर साथी – Mamma