0

MVisualC ++ 2010を使用していますが、「メイン」の定義を解除しようとすると、結果が得られず、コンソールが通常どおり起動します。エントリポイントの欠落エラーなどが予想されていました。何故ですか?

#undef main
int main()
{
}
4

1 に答える 1

7

mainはそもそもa#defineではありません。あなた#undefは何も変更しません。

#define foo barプリプロセッサに「fooのすべての出現箇所をbarに置き換えてください」と伝えます。 #undef fooプリプロセッサに「fooにはもう特別な意味はありません。そのままにしておきます」と伝えます。

リンカエラーが必要な場合は、名前mainをegmain2に変更するか、次のようにします。

void foo();
int main() {
  foo();
}

これは、関数が存在することをコンパイラーに通知しfooます(ただし、関数が何であるかは通知しません)。main使用しようとするため、リンカーが見つからない場合はエラーが発生します。

于 2011-03-05T09:54:14.450 に答える