#undef main не дает результата - PullRequest
0 голосов
/ 05 марта 2011

Я работаю с MVisualC ++ 2010, и когда я пытаюсь отменить определение "main", ничего не получается, и консоль запускается как обычно. Я ожидал какую-то отсутствующую ошибку точки входа или что-то. Почему это так?

#undef main
int main()
{
}

1 Ответ

7 голосов
/ 05 марта 2011

main не является #define во-первых.Ваш #undef вообще ничего не меняет.

#define foo bar говорит препроцессору "заменить все вхождения foo на bar".#undef foo сообщает препроцессору: «foo больше не имеет никакого особого значения, оставьте его как есть»

Если вы хотите, чтобы компоновщик выдал ошибку, переименуйте main, например, main2, или сделайте, например, следующее:

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

Это говорит компилятору, что функция foo существует (но не то, что она есть).main пытается использовать его, поэтому компоновщик выдаст ошибку, когда не сможет его найти.

...