- Член од
- 8 октомври 2007
- Мислења
- 4.680
- Поени од реакции
- 8.511
Се користат за да се спречи т.н double inclusion т.е да се спречи повеќекратно вклучување на хедерот во ц фајлот, ако тој веќе е вклучен. C/C++ не сака повеќекратно вклучување на хедер фајлови затоа што се нарушува т.н one definition rule (http://en.wikipedia.org/wiki/One_Definition_Rule).Зашто се користи include guard кај хеадер фајловите?
#ifndef FOO_H
#define FOO_H
// ...
#endif
на ова мислев.Читав на нет али не можам да ги разберам убаво,ако може некој на кратко да објасни.
Сигурно си го видел овој пример на википедија, ама е доста едноставен па ќе го постирам и овде:
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