मैं आमतौर पर हेडर फ़ाइलों की शुरुआत में इस तरह कोड देख रहा हूं:
#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।