使用不帶 () 的函式名稱不會產生程式碼
當您程式中宣告的函式名稱不使用括弧時,編譯器不會產生程式碼。 不論函式是否接受參數,編譯器都會計算函式位址,都會發生此情況:不過,由於函式呼叫運算子 「()」 不存在,因此不會進行呼叫。 此結果與下列類似:
// 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");
}