Неправильно ли положить #endif
в начале файла заголовка C++ после #ifndef
и #define
? Если да, то почему?Почему #endif включен в конце страницы .h?
This question не затрагивает причины, по которым #endif
находится в конце, - это именно то, к чему я стремился.
Например
//cDate.h
#ifndef CDATE_H_EXISTS
#define CDATE_H_EXISTS
#include <string>
class cDate {
private:
std::string day;
std::string month;
std::string year;
public:
void setDate(std::string, std::string, std::string);
std::string getDate(int);
}; // end class def
#endif
против
//cDate.h
#ifndef CDATE_H_EXISTS
#define CDATE_H_EXISTS
#endif
#include <string>
class cDate {
private:
std::string day;
std::string month;
std::string year;
public:
void setDate(std::string, std::string, std::string);
std::string getDate(int);
}; // end class def
Задайте себе, что цель '#ifndef CDATE_H_EXISTS' ... –
Помещение' # endif' в начале файла заголовка C++ поражает всю цель директивы препроцессора '# ifdef': чтобы избежать содержимого заголовка включается несколько раз одним и тем же исходным файлом. –
Возможный дубликат [Почему #ifndef и #define используются в файлах заголовков C++] (http://stackoverflow.com/questions/1653958/why-are-ifndef-and-define-used-in-c-header-files) –