次の方法で共有


"()" のない関数名とコードの生成

更新 : 2007 年 11 月

プログラムで宣言した関数名にかっこを付けないで使用すると、コードが生成されなくなります。コンパイラが関数アドレスを計算するため、これは関数がパラメータをとるかどうかには関係ありません。ただし、関数呼び出し演算子 "()" が存在しないので、呼び出しは行われません。結果は、次のようになります。

// 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");
}

参照

参照

コードの最適化