int tmain int argc tchar argv

Почему такое имя дает VS, исполняющей функции, в консольном приложении?

1 ответ 1

Для не-Unicode-программ используется соответствующее стандарту имя main и список параметров int argc, char* argv[] .

Для Unicode-программ список параметров в MSVC выглядит как int argc, wchar_t* argv[] , и во избежание конфликтов с исходниками и компиляторами, соответствующими стандарту, функция называется wmain .

Для программ, которые могут компилироваться и в Unicode-, и в не-Unicode-режиме, список аргументов выглядит как int argc, _TCHAR* argv[] , где макрос _TCHAR определён как char или wchar_t в зависимости от значения макроса _UNICODE . Таким образом, нужно третье имя для функции. Так и было придумано имя _tmain .

Всё это, конечно, требует некоторой магии компоновщика, который должен уметь определить entry point не только в функции main , как по стандарту, а и в функциях wmain / _tmain .

Если вы уверены, что вам не нужно Unicode-приложение, вы можете переименовать функцию в main и дать ей список аргументов int argc, char* argv[] , чтобы соответствовать стандарту. Или если вы твёрдо решили, что ваша программа будет запускаться лишь под линейкой WinNT/XP/7 (а не Win95/98), вы можете остановиться на Unicode-варианте и переименовать функцию в wmain (соответственно, аргументы должны быть int argc, wchar_t* argv[] ).

Запоздалое уточнение (спасибо @alexolut): Согласно документации, _tmain определяется в при помощи typedef как main или wmain , так что в вашей программе всё равно будет либо main , либо wmain .

(И да, вы можете опустить параметры, или добавить третий параметр envp , или задекларировать возвращаемый тип void .)

Primary tabs

Forums:

argc и argv — это не что иное как так называемые «параметры командной строки»
Причём:

  • argc — число переданных параметров
  • argv — массив указателей на символьные строки, каждая из которых соответствует одному параметру командной строки.

Программы на C++ трактуют аргументы командной строки как параметры функции main -например —

А вот в Visual Studio мелкомягкие с удовольствие используют свой тип «надстроенный» над *char =

cin >> exit; //Даем пользователю время оценить результат

Скопируйте его в cpp файл на место предыдущего, сгенерированного кода.

Затем выберите Build (Скомпилировать) | Build Solution (Скомпилировать решение) и нажмите, по окончанию компиляции, F 5. Перед вашими глазами возникнет такое окно (Рис.2):

Рис.2

Этот пример иллюстрирует все сообщения выводимые ОС и ответ пользователя на них.

Но приступим к ознакомлению с кодом. Первые четыре записи были описаны ранее (в разделе Разбор сгенерированного кода) так что начнем познавать неизведанные дали.

☻ using namespace std – важная строка. using namespace – оператор позволяющий создавать и использовать пространства имен. Пространства имен – это что-то наподобие улиц города только в С ++. std – позволяет изолировать данные от ОС, что бы та там не напортачила. При несложных программах, таких как эта, рекомендую всегда использовать. Примечание: Если вы будете работать, с программами для Windows не следует включать пространство std в проекты.

☻ double a ; double b ; char znac ; char exit ; — это объявления переменных. Переменная – своего рода контейнер, в которое можно вмещать все что угодно, а типы показуют что в эту перемену можно сохранить. Также типы переменных «резервируют» место под переменную. Но, спросите вы, что именно хранят определенные типы данных? Вот несколько простых типов данных:

Оцените статью