मैं आमतौर पर हेडर फ़ाइलों की शुरुआत में इस तरह कोड देख रहा हूं:
#ifndef HEADERFILE_H
#define HEADERFILE_H
और फाइल के अंत में है
#endif
इसका उद्देश्य क्या है?
#pragma
है: यह एक संकलक-विशिष्ट सुविधा को सक्रिय करता है। यद्यपि #pragma once
यह बहुत व्यापक रूप से समर्थित है, यह गैर-मानक है।
info cpp
या यहां देखें ) कहते हैं, "यह सभी पूर्वप्रकारों द्वारा मान्यता प्राप्त नहीं है, इसलिए आप इस पर पोर्टेबल प्रोग्राम में भरोसा नहीं कर सकते।" और जीएनयू सीपीपी आम और पोर्टेबल #ifndef
मुहावरे का अनुकूलन करता है इसलिए यह उतना ही कुशल है जितना कि #pragma once
।
#ifndef HEADERFILE_H
शीर्षक के कार्यान्वयन के नाम स्थान का उल्लंघन कर सकता है, जिसके साथ शुरू होता है E
; के साथ शुरू होने वाले पहचानकर्ता E
और एक अंक या बड़े अक्षर के लिए आरक्षित हैं <errno.h>
। मैं सुझाव देता हूं #ifndef H_HEADERFILE
।