Article View: pl.comp.lang.c
Article #272330Re: Header include guard
From: Sektor van Skijlen
Date: Mon, 25 Feb 2008 01:28
Date: Mon, 25 Feb 2008 01:28
54 lines
2799 bytes
2799 bytes
Dnia Sat, 23 Feb 2008 16:09:43 +0100, Seweryn Habdank-Wojewódzki skrobie: > Witam > Po pierwsze chciałbym się zapytać jak "header include guard" tłumaczy się na > język polski. > W CVu vol. 20 (wydawnictwo ACCU) David Carter-Hitchin wspomina, aby Header > Include Guard (HIG) zawierał: nazwę pliku, rozszerzenie, date w formacie > YYYYMMDD oraz losową liczbę np. 6-cio cyfrową. Wygląda to tak: > #ifndef FILENAME_EXT_20080223_123456 > #define FILENAME_EXT_20080223_123456 > /* ... */ > #endif > Wskazuje na to, że unikna kłopotów związanych z sytuacją, kiedy dwa > identyczne HIG są załadowane do programu (data i losowa liczba w zasadzie > eleminują ten problem). Generalnie, HIG powinien zapobiegać wielokrotnej interpretacji tych samych definicji. Jeśli więc masz plik z tymi samymi definicjami, to powinien chronić je taki sam HIG. Jeśli więc zawierasz w takim pliku datę, zmienioną po aktualizacji, to wtedy będzie to NIE TEN SAM HIG. I wtedy to jest gówno, a nie zabezpieczenie. > Osobiście do tej pory używałem konstrukcji ala boost HIG > #ifndef FILENAME_EXT_INCLUDED > #define FILENAME_EXT_INCLUDED 1 > /* ... */ > #endif // FILENAME_EXT_INCLUDED > Jakie macie doświadczenia związane z tą konstrukcją? No, tak powinno się robić. Generalnie to jest problem, bo wielu może mieć plik o takiej samej nazwie w różnych bibliotekach i mieć różną zawartość. Chociaż ten problem wychodzi również w takich sytuacjach np. jak długie listy ścieżek do #include (-I w gcc) :) -- // _ ___ Michal "Sektor" Malecki <sektor(whirl)kis.p.lodz.pl> \\ L_ |/ `| /^\ ,() <ethouris(O)gmail.com> // \_ |\ \/ \_/ /\ C++ bez cholesterolu: http://www.intercon.pl/~sektor/cbx "Java is answer for a question that has never been stated"
Technical Details
Message-ID:
<fpt5j4$qna$6@kujawiak.man.lodz.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.man.lodz.pl!not-for-mailReferences:
<fppbs5$jot$1@news.vectranet.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.man.lodz.pl!not-for-mail
From: Sektor van Skijlen <ethouris@guess.if.gmail.com.is.valid.or.invalid>
Newsgroups: pl.comp.lang.c
Subject: Re: Header include guard
Date: Mon, 25 Feb 2008 01:28:04 +0000 (UTC)
Organization: LODMAN - Metropolitan Area Network in LODZ, Poland
Lines: 54
Sender: Michal Malecki <sektor@student.kis.p.lodz.pl>
Message-ID: <fpt5j4$qna$6@kujawiak.man.lodz.pl>
References: <fppbs5$jot$1@news.vectranet.pl>
NNTP-Posting-Host: student.kis.p.lodz.pl
Mime-Version: 1.0
X-Trace: kujawiak.man.lodz.pl 1203902884 27370 212.191.89.21 (25 Feb 2008 01:28:04 GMT)
X-Complaints-To: abuse@man.lodz.pl
NNTP-Posting-Date: Mon, 25 Feb 2008 01:28:04 +0000 (UTC)
User-Agent: tin/1.8.3-20070201 ("Scotasay") (UNIX) (FreeBSD/6.2-RELEASE-p3 (sparc64))
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit