Avatar billede svinth Nybegynder
08. august 2001 - 10:51 Der er 13 kommentarer og
2 løsninger

Pragma Once

Hej c gruppe.

Jeg har i en gammel stump kode fundet:

#if _MSC_VER > 1000
#pragma once
#endif

_MSC_VER er 1200 på den compiler jeg bruger, hvorfor er det interessant at fortælle denne compiler at den kun skal indlæse headerfilen (hvori ovenstående står) en gang?

M.v.h. Svante
Avatar billede wisen Nybegynder
08. august 2001 - 10:58 #1
Det er fordi du ville få nogle compilerfejl hvis den samme headerfil blev inkluderet flere gange...
Avatar billede svinth Nybegynder
08. august 2001 - 11:10 #2
Vil det sige at en compiler der har et versionsnummer højere end 1000 er dummere end en der har et nummer mindre?

M.v.h. Svante
Avatar billede wisen Nybegynder
08. august 2001 - 11:11 #3
Åbenbart :)
Avatar billede wisen Nybegynder
08. august 2001 - 11:11 #4
Eller det kan være at en ændre compiler ikke kender \"pragma once\"....
Avatar billede wisen Nybegynder
08. august 2001 - 11:12 #5
ændre == ældre :)
Avatar billede svinth Nybegynder
08. august 2001 - 12:00 #6
Hej.

Det giver vel ingen mening at en ældre ikke kender pragma\'en, for så ville der vel have været en #else ?

M.v.h. Svante
Avatar billede wisen Nybegynder
08. august 2001 - 12:21 #7
Ja, måske...
Avatar billede morten2 Nybegynder
09. august 2001 - 11:25 #8
alle h filer burde starte med

#ifndef _FX_HEADER_FILENS_NAVN
#define _FX_HEADER_FILENS_NAVN

og slutte med

#endif

herved ungår man at den inkluderes mere end een gang og det virker under alle compilere.

Jeg er ikke sikker men jeg kunne forestille mig at pragma once h filer ikke engang bliver åbnet af compileren mere end en gang. Dvs en hurtigere compilation.
Avatar billede morten2 Nybegynder
09. august 2001 - 11:29 #9
Jeg checkede lige msdn.
Hvis filen indeholder pragma once så bliver den kun åbnet een gang.
Avatar billede wisen Nybegynder
09. august 2001 - 11:29 #10
Jo, \"#pragma once\" sørger for, at den kun åbnes een gang; og derfor kun inkluderes een gang....
Avatar billede wisen Nybegynder
09. august 2001 - 11:32 #11
Den er bare en anden måde at skrive \"#ifndef.. #define.. #endif\" på..
Avatar billede svinth Nybegynder
09. august 2001 - 11:32 #12
Hej.

At en fil åbnes en gang og at den inkluderes en gang er ikke det samme!? eller hvad?

Svante
Avatar billede morten2 Nybegynder
09. august 2001 - 11:43 #13
svinth:

hvis man bruger #ifndef _FX_HEADER_FILENS_NAVN
til at ungå at filen bliver inkluderet mere end en gang så bliver den åbnet mere end en gang.
Hvis man bruger pragma once bliver den kun åbnet en gang.
Resultatet er det samme. Meen compileringstiden er forskellig.

Avatar billede morten2 Nybegynder
09. august 2001 - 11:45 #14
men ok hvis du ikke har et projekt med flere tusinde filer vil du sikkert ikke mærke forskellen.
Avatar billede wisen Nybegynder
09. august 2001 - 12:18 #15
Takker for point
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester