2009-08-11 12 views
17

Czy ktoś może mi pomóc zrozumieć #pragma?Do czego służy #pragma?

ifndef TARGET_OS_LINUX 
#pragma once 
endif 

Co, kiedy, gdzie, dlaczego, przykład?

Powyższe jest w jakiś kod, który mam refaktoringu ....

Odpowiedz

21

#pragma tylko prefiks dla funkcji specyficznych dla kompilatora.

W tym przypadku #pragma once oznacza, że ​​ten plik nagłówkowy zostanie umieszczony tylko jeden raz w określonym pliku docelowym. Usuwa to potrzebę include guards.

+1

Eterowanie ma rację, z wyjątkiem ostrzeżenia, że ​​#pragmas są rozszerzeniami kompilatora, nie ma ich w standardzie. Lepiej ich unikać. – f0b0s

+1

czy to nie to, co powiedział? Funkcja specyficzna dla kompilatora == niestandardowe rozszerzenie kompilatora – jalf

+0

@John - Gdzie mogę uzyskać listę funkcji kompilatora, których mogę użyć? Zmieniają się one w zależności od GCC i Intel CC, jestem pewien, więc jaka jest najlepsza ochrona dla przenośnego kodu? – user147502

5
  • Co to jest osłona nagłówka. Ten plik zostanie uwzględniony tylko raz.
  • Kiedy - w procesie kompilacji
  • dlaczego - aby uniknąć podwójnego uwzględniania.

"Osłony nagłówków to małe fragmenty kodu, które chronią zawartość pliku nagłówkowego przed dodaniem więcej niż raz."