共用方式為


建議選擇其一時的函式和巨集

大部分的 Microsoft run-time 程式庫常式會編譯或組譯函式,但某些常式實作為巨集。 當標頭檔宣告函式和巨集的版本為常式時,巨集定義優先,因為永遠會出現在函式宣告之後。 當您叫用會實作為函式] 與 [巨集的常式時,您可以強制編譯器使用的功能版本兩種方式:

  • 以括弧括住常式的名稱。

    #include <ctype.h>
    a = _toupper(a);    // Use macro version of toupper.
    a = (_toupper)(a);  // Force compiler to use 
                        // function version of toupper.
    
  • "取消"以巨集定義#undef指示詞:

    #include <ctype.h>
    #undef _toupper
    

如果您需要選擇一個函式和巨集的程式庫常式的實作,請考慮下列的取捨:

  • 大小與速度使用巨集的主要優點是更快速的執行時間。 在前置處理,巨集展開 (根據其定義遭到取代) 內嵌每次使用時。 函式定義中,就會發生就會呼叫一次無論次數。 巨集可能會增加程式碼的大小,但沒有相關的函式呼叫的額外負荷。

  • 函式評估函式會評估為一個地址。 巨集則否。 因此,您無法在需要有指向指標的內容中使用巨集名稱。 舉個例說,您可以宣告函式指標,但不是一個巨集指令指標。

  • 型別檢查當您宣告函式時,編譯器可以檢查引數型別。 因為您無法將巨集的宣告,編譯器不會檢查巨集引數型別 ; 雖然它可以檢查您傳遞給巨集的引數數目。

請參閱

參考

CRT 程式庫功能