編譯器內建函式

大部份的函式都包含在程式庫中,但有些函式是內建 (也就是內建) 到編譯器。 這些稱為內建函式或內建。

備註

如果函式是內建的,則該函式的程式碼通常是以內嵌方式插入,避免函式呼叫的額外負荷,並可針對該函式發出高效率的機器指令。 內建函式經常比對等的內嵌組件來得快,因為最佳化工具具有內建知識,知道有多少內建函式在運作,因此可以使用在使用內嵌組件時無法使用的某些最佳化。 此外,最佳化工具可以用不同方式擴充內建函式、以不同方式對齊緩衝區,或是根據呼叫的內容和引數進行其他調整。

使用內建函式會影響程式碼的可攜性,因為如果程式碼是使用其他編譯器所編譯,Visual C++ 中可用的內建函式可能無法使用,而且在某些目標架構中可能可用的某些內建函式,對於所有架構會無法使用。 然而,內建函式的可攜性通常高於內嵌組件。 在不支援內嵌組件的 64 位元架構上必須有內建函式。

某些內建函式 (如 __assume__ReadWriteBarrier) 會提供資訊給編譯器,這會影響最佳化工具的行為。

某些內建函式僅以內建函式的形式提供使用,而有些內建函式則是在函式和內建實作中都提供使用。 您可以指示編譯器以兩種方式之一使用內建實作,取決於您是只要啟用特定的函式,還是想要啟用所有的內建函式。 第一種方式是使用 #pragma intrinsic( intrinsic-function-name-list ) Pragma 可以用來指定單一內建函式或以逗號分隔的多個內建函式。 第二個是使用 /Oi (產生內建函式) 編譯器選項,讓指定平臺上的所有內建函式都可供使用。 在 /Oi ,使用 #pragma function( intrinsic-function-name-list ) 強制使用函式呼叫,而不是內建函式。 如果特定內建函式的檔指出常式只能當做內建函式使用,則不論 指定 /Oi 還是 #pragma intrinsic 指定,都會使用內部實作。 在所有情況下, /Oi #pragma intrinsic 允許,但不強制優化器使用內建函式。 最佳化工具仍然可以呼叫該函式。

某些標準的 C/C++ 程式庫函式可作為某些架構上的內建實作使用。 呼叫 CRT 函式時,如果在 命令列上指定 /Oi ,就會使用內部實作。

intrin.h > 標頭檔 < 可用來宣告通用內建函式的原型。 immintrin.h 和 < ammintrin.h >> 標頭檔中提供 < 製造商特定的內建函式。 此外,某些 Windows 標頭宣告對應到編譯器內建函式上的函式。

下列各節會列出各種架構上可用的所有內建函式。 如需有關內建函式在特定目標處理器上之運作方式的詳細資訊,請參閱製造商的參考文件。

另請參閱

ARM 組合器參考
Microsoft 巨集組譯工具參考
關鍵字
C 執行時間程式庫參考