- Член од
- 8 октомври 2007
- Мислења
- 4.680
- Поени од реакции
- 8.511
Зашто се користи include guard кај хеадер фајловите?
#ifndef FOO_H
#define FOO_H
// ...
#endif
на ова мислев.Читав на нет али не можам да ги разберам убаво,ако може некој на кратко да објасни.
Се користат за да се спречи т.н double inclusion т.е да се спречи повеќекратно вклучување на хедерот во ц фајлот, ако тој веќе е вклучен. C/C++ не сака повеќекратно вклучување на хедер фајлови затоа што се нарушува т.н one definition rule (http://en.wikipedia.org/wiki/One_Definition_Rule).
Сигурно си го видел овој пример на википедија, ама е доста едноставен па ќе го постирам и овде:
File "grandfather.h"
struct foo {
int member;
};
File "father.h"
#include "grandfather.h"
File "child.c"
#include "grandfather.h"
#include "father.h"
Here, the file "child.c" has indirectly included two copies of the text in the header file "grandfather.h". This causes a compilation error, since the structure type foo is apparently defined twice. In C++, this would be a violation of the One Definition Rule.
http://en.wikipedia.org/wiki/Include_guard