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