Заголовочный файл C++ в Visual Studio

Хорошо. Итак, у меня есть простой вопрос. Если я спрашиваю не в том месте, пожалуйста, поправьте меня. Я хочу спросить, почему Visual Studio дает мне это:

#include "stdafx.h"


int main()
{
    return 0;
}

каждый раз, когда я создаю новый проект? (Я знаю, что могу выбрать «Пустой проект» и добавить свой файл .cpp самостоятельно, но мне просто любопытно. Там написано #include <stdio.h> и #include <tchar.h>. Так для чего это нужно? Вы все его используете или что-то в этом роде?

И P.S - почему в объявлении main нет (int argc, char** argv)? (на моем курсе кодирования в колледже я узнал, что может быть _tmain(int argc, _TCHAR* argv) при создании чего-либо в VS)


person minecraftplayer1234    schedule 02.03.2016    source источник
comment
Это странность Visual Studio. Он поддерживает их предварительно скомпилированные заголовки. Параметры main необязательны — вы можете добавить их при необходимости или опустить, если вы их не используете. _tmain в качестве точки входа в программу также является странностью Microsoft, а не частью стандартного C++.   -  person Jerry Coffin    schedule 02.03.2016
comment
вы можете удалить stdafx.h, и после этого вам нужно отключить предварительно скомпилированные заголовки -> stackoverflow.com/questions/7261707/   -  person Angelus Mortis    schedule 02.03.2016


Ответы (3)


Хорошо. Итак, у меня есть простой вопрос. Если я спрашиваю не в том месте, пожалуйста, поправьте меня. Я хочу спросить, почему Visual Studio дает мне это: ...

Что ж, это немного зависит от типа проекта, который вы выбирали в мастере. Похоже на стандартный шаблон для консольного проекта.

#include "stdafx.h"

добавляется мастером перед любым типом единицы перевода. Он поддерживает механизм оптимизации предварительно скомпилированного заголовка.


почему в основном объявлении нет (int argc, char** argv)?

Потому что шаблон предоставляет минимум для корректного определения подпрограммы main() ввода.

person πάντα ῥεῖ    schedule 02.03.2016

При создании нового проекта Win32 Visual Studio автоматически добавляет в ваш проект предварительно скомпилированный заголовок «stdafx.h», даже если вы сняли флажок «Пустой проект».

Если вы хотите отключить это, перейдите в свойства конфигурации вашего проекта -> C/C++ -> Предварительно скомпилированные заголовки и выберите «Не использовать предварительно скомпилированные заголовки».

О работе с предварительно скомпилированными заголовками см.: https://stackoverflow.com/a/4726838.

И П.С. посмотрите -> https://stackoverflow.com/a/4207223

person Kevin    schedule 02.03.2016

Предварительно скомпилированный заголовок предназначен для ускорения времени компиляции за счет компиляции содержимого наиболее часто используемых заголовков только один раз, а затем повторного использования результатов компиляции. Вы можете изменить его имя, если хотите.

person Myrle Krantz    schedule 02.03.2016