共用方式為


使用不帶 () 的函式名稱不會產生程式碼

當程式中宣告的函式名稱在使用時沒有加上括號,編譯器 (Compiler) 便不會產生程式碼。 無論該函式是否帶參數,都會發生這種情況,因為編譯器會計算函式的位址;不過,由於沒有出現函式呼叫 (Function Call) 運算子 "()",因此不會進行任何呼叫。 這種結果類似下式:

// compile with /Wall to generate a warning
int a;
a;      // no code generated here either

在 Visual C++ 中,即使使用警告等級 4 也不會產生診斷輸出。 不會發出任何警告;不會產生任何程式碼。

以下的示範程式碼會正確無誤地編譯 (在警告下) 並連結,但不會產生 funcn( ) 參考的任何程式碼。 若要正確執行,請加入函式呼叫運算子 "()"。

#include <stdio.h>
void funcn();

int main() {
   funcn;      /* missing function call operator; 
                  call will fail.  Use funcn() */
   }

void funcn() {
   printf("\nHello World\n");
}

請參閱

參考

最佳化程式碼