C Preprocessor Directives
Introduction to C Preprocessor Directives
Preprocessor C language का एक बहुत ही powerful tool है। कोई भी C program compiler द्वारा compile किये जाने से पहले preprocessor के द्वारा process किया जाता है।
Preprocessor का काम preprocessor directives को process करना होता है। आपके program की कोई भी वो line जो # से शुरू होती है preprocessor directive कहलाती है।
उदाहरण के लिए यदि आपने program में #include directive यूज़ किया है, तो preprocessor के द्वारा process किये जाने के बाद ये line header file के actual content से replace कर दी जाती है। इस process को pre-processing कहा जाता है।
C programs में अलग अलग तरह के preprocessor directives यूज़ किये जाते है।
#include
ये C programming में commonly यूज़ किये जाने वाला preprocessor directive है। ये directive किसी header file के content को जिस file में इसे include किया जाता है उस में copy कर देता है।
/* For built in header files */
#include <file.h>
/* For user defined header files */
#include “file.h”
#define
ये directive c program में constants और macros define करने के लिए यूज़ किया जाता है। इसलिए आप इसे 2 प्रकार से यूज़ कर सकते है।
#define को आप कोई constant define करने के लिए यूज़ कर सकते है। इसका general syntax इस प्रकार होता है।
#define PI 3.14;
इस statement को program में define करने के बाद जँहा भी आप program में PI को यूज़ करेंगे तो PI 3.14 से replace कर दिया जायेगा।
#define directive को macros define करने के लिए भी यूज़ किया जाता है। एक macro code की एक line होती है जिसे program में macro name से replace कर दिया जाता है। ये एक function की तरह भी हो सकता है।
#define square(n) (n*n);
जँहा भी आप program में square को यूज़ करेंगे और उसमे कोई number pass करेंगे तो वह उस number के square से replace हो जायेगा।
#undef
ये directive #define directive द्वारा define किये गए constant या macro को undefine करने के लिए यूज़ किया जाता है। इसके आगे आप constant या macro का सिर्फ नाम लिखते है।
#define PI 3.14; /* defining constant */
...... /* other statements */
#undefine PI; /* undefine constant */
#ifdef, #else, #endif
ये directive ये check करने के लिए यूज़ किया जाता है की क्या दिए गए नाम से कोई macro define किया गया है। यदि define किया गया है तो #ifdef के बाद का code execute हो जाता है नहीं तो #else के बाद का का code execute होता है। यदि आप #else नहीं यूज़ कर रहे है तो #ifdef को आप #endif से terminate करते है।
#ifdef Square
#undef Square
#else
#define Square(n) (n*n);
#endif
ऊपर दिया गया code check करता है की क्या कोई Square नाम से macro define किया गया है। यदि macro पहले से defined है तो उसे undefine किया जायेगा। और यदि macro पहले से define नहीं है तो उसे define किया जायेगा।
इसी प्रकार #ifndef directive भी होता है जो code को तब execute करता है जब दिए गए नाम वाला macro define न किया गया हो।
#error
मान लीजिये की आपके program में किसी macro की आवश्यकता है और यदि वो macro define नहीं किया गया है तो आप इस situation से related एक error show कर सकते है। इसके लिए आप #error directive यूज़ करते है।
#ifndef Square
#error Please define the marco first
#endif
#pragma
ये directive compiler को additional information देने के लिए यूज़ किया जाता है। मान लीजिये की आपने एक function create किया है अब आप इस function के बारे में compiler को additional information दे सकते है।
#pragma token