🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.c
Article #272330

Re: Header include guard

#272330
From: Sektor van Skijlen
Date: Mon, 25 Feb 2008 01:28
54 lines
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-mail
References: <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