2009-08-11 118 views
17

任何人都可以幫助我理解#pragma?什麼是#pragma用於?

ifndef TARGET_OS_LINUX 
#pragma once 
endif 

什麼,什麼時候,哪裏,爲什麼,一個例子?

以上是一些代碼,我重構....

回答

21

#pragma是隻爲特定編譯器功能的前綴。

在這種情況下,#pragma once意味着此頭文件只會被包含一次到特定的目標文件中。它消除了對include guards的需求。

+1

etherything是正確的,除了#pragma是編譯器擴展的警告,它們不在Standard中。你最好避免它們。 – f0b0s 2009-08-11 23:42:04

+1

是不是他說的?編譯器特有的功能==非標準的編譯器擴展 – jalf 2009-08-12 00:01:37

+0

@John - 那麼我在哪裏可以獲得我可以使用的編譯器特定功能列表?這些改變取決於GCC和英特爾CC我相信,那麼對於便攜式代碼來說,最好的安全防護是什麼? – user147502 2009-08-12 02:50:31

5
  • 什麼 - 它是頭衛兵。該文件將只包含一次。
  • 何時 - 在編譯過程中
  • 原因 - 避免雙重包括。

「標題守護程序是一小段代碼,可以保護頭文件的內容不會被多次包含。」