भले ही आपके समाधान काम करता है, मैं निम्नलिखित प्रक्रिया अपनाते हैं:
#include <stdio.h>
#define MACRO //or omitted
#ifdef MACRO
#define FUNCTION(a) Function(a);
#else
#define FUNCTION(a)
#endif
#ifdef MACRO
void Function(const char* str)
{
printf("%s\n", str);
}
#endif
int main(void)
{
FUNCTION("hello world")
getchar();
return 0;
}
नोट : function मैक्रो है, समारोह समारोह का वास्तविक नाम है
इस समारोह के लिए एक कॉल (स्थिरांक चार *) जब मैक्रो सक्षम किया गया है करने के लिए शन (क) को परिभाषित करते हुए काम करता है। दूसरी ओर, जब मैक्रो अक्षम है, कार्य करने के लिए (क) कुछ भी नहीं करने के लिए परिभाषित किया जाएगा कहते हैं।
मैं इस विधि को पसंद करते हैं, क्योंकि यह दूर सार मैक्रो अपने समारोह परिभाषा को परिभाषित करने से आपकी कॉल परिभाषित किया जाता मैक्रो आसान होगा करते हैं। आप ऐसे मामलों में जहां रिलीज़ मोड में आप केवल उन्हीं कॉल के कुछ फंक्शन को हटाने की जरूरत हो सकता है। उस मामले में समारोह की परिभाषा () अभी भी आवश्यक है। उदाहरण के लिए:
#include <stdio.h>
#define DEBUG //or omitted
#ifdef DEBUG
#define FUNCTION(a) Function(a);
#else
#define FUNCTION(a)
#endif
void Function(const char* str)
{
printf("%s\n", str);
}
int main(void)
{
// Call function with Hello World only in debug
FUNCTION("hello world")
getchar();
// Call function with goodbye world in both debug and release
Function("goodbye world");
return 0;
}