Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/246: Рейтинг темы: голосов - 246, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 20.07.2010
Сообщений: 29
1

Что означает эта строка? int _tmain(int argc, _TCHAR* argv[])

21.08.2010, 20:11. Просмотров 49210. Ответов 12
Метки нет (Все метки)

Всем привет, до этого пользовался DEV, решил пересесть на Visual Studio 2010 Express C++.
С++ еще не изучал, хочу сначала добить "С".
По умолчания при создании консольного проекта в редакторе прописан вот такой код:
C++
1
2
3
4
5
6
7
#include "stdafx.h"
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    return 0;
}
С #include "stdafx.h" я разобрался,
а вот вторую строку ни как не магу понять int _tmain(int argc, _TCHAR* argv[])

Вопрос: Так что же означает эта строка? int _tmain(int argc, _TCHAR* argv[])
Извиняюсь за глупый вопрос.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.08.2010, 20:11
Ответы с готовыми решениями:

Что есть argc и **argv в функции int main(int argc, char **argv)?
Здраствуйте, уважаемые кодеры! Что означает argc и **argv в функции int main(int argc, char...

В каком случае надо начинать с int main() или с int _tmain( int argc, _TCHAR* argv[] ) и т.д.?
Не понимаю, с чего начинать. Заранее спс.

int main() и int _tmain(int argc, _TCHAR* argv[])
При создании нового консольного приложения Microsoft Visual С++ 2010 Express создает начальный...

Подскажите пожалуйста с int main(int argc, char*argv[])
Если я правильно понимаю, то int argc это передача аргумента программе, т. е если argc>1 то...

12
бжни
2468 / 1678 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
21.08.2010, 20:17 2
читаем рихтера про юникод
0
Эксперт С++
5037 / 3097 / 271
Регистрация: 11.11.2009
Сообщений: 7,047
21.08.2010, 20:25 3
Хочется добавить, что эта фишка с _t несколько исключает мультиплатформенность кода, линёвский gcc, например, её не поймёт, поэтому старый добрый int main(int argc, char *argv[]) всё-же приятнее...
1
Эксперт С++
3936 / 1801 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
21.08.2010, 20:26 4
Brodyg, такая тема уже поднималась... ответ здесь: _tmain(...) вместо main(...) Почему?
1
0 / 0 / 0
Регистрация: 20.07.2010
Сообщений: 29
21.08.2010, 20:49  [ТС] 5
Если с (_tmain) ситуация немного прояснилась, то в случае с остальной частью строки остается прежней.
Для чего при создании проекта в скобках майн прописываются эти ключевики? (int argc, _TCHAR* argv[])
0
бжни
2468 / 1678 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
21.08.2010, 20:53 6
Тип данных _TCHAR определяется в файле Tchar.h условно.Если при построении определен символ _UNICODE, тип данных _TCHAR определяется как wchar_t. В противном случае (для сборок с однобайтовой и многобайтовой кодировкой) этот тип определяется как char.(Базовый тип данных wchar_t, обеспечивающий поддержку двухбайтовых знаков Юникод, является 16-битным аналогом 8-битного типа char со знаком.) Для многоязыковых приложений следует использовать функции семейства _tcs, в которых используются знаки _TCHAR, а не байты.Например, с помощью функции _tcsncpy выполняется копирование n знаков _TCHARs, а не n байтов.
гугл всемОгущий
1
В астрале
Эксперт С++
8026 / 4783 / 654
Регистрация: 24.06.2010
Сообщений: 10,558
21.08.2010, 20:53 7
Brodyg, Для запуска из консоли. Имена файлов и т.п.
1
Эксперт С++
2329 / 1702 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
21.08.2010, 20:55 8
Для работы с аргументами командной строки.
argc - количество переданных аргументов командной строки.
argv - массив переданных аргументов командной строки. Если символ UNICODE определен, представляет собой массив юникодовских строк, в противном случае - обычных.
1
0 / 0 / 0
Регистрация: 20.07.2010
Сообщений: 29
21.08.2010, 22:19  [ТС] 9
Я так понял, что эта строка нацелена на то, что бы в программе можно был использовать символы UNICODE, например кириллицу и так далее. Я попробовал вывести на экран "Привет" но по прежнему результат оказался стандартным (непонятная каша).
Исправьте если не так понял.

Не хочу подымать вопрос о кириллице в консоли, такой цели нет.
Хочется просто понять цель этих символов в майн до конца. Это же люде в майкрософт сидели время тратили, думали, что же туда прописать полезного по умолчанию. И с моей стороны просто будет не справедливо, удалить эту строку даже не поинтересоваться, что же они хотели сделать полезного этим.
0
Эксперт С++
2329 / 1702 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
21.08.2010, 22:21 10
Brodyg, вы не правы, "эта строка" нужна для работы с аргументами командной строки переданных при запуске приложения. Читайте про аргументы командной строки.
2
Эксперт С++
5037 / 3097 / 271
Регистрация: 11.11.2009
Сообщений: 7,047
21.08.2010, 22:21 11
Лучший ответ Сообщение было отмечено как решение

Решение

Brodyg,
Нет, просто параметры командной строки, которые будут передаваться программе, хранятся в виде строк, и в случае с приставками _t эти строки будут юникодовскими. На отображение информации в консоли это никак не влияет, только на представление в памяти.
4
1 / 1 / 0
Регистрация: 09.06.2015
Сообщений: 18
10.06.2015, 11:56 12
Цитата Сообщение от Brodyg Посмотреть сообщение
Я попробовал вывести на экран "Привет" но по прежнему результат оказался стандартным (непонятная каша).
Чтобы не было каши пиши перед строкой текста: setlocale(LC_ALL "RUS");
1
6911 / 5976 / 2709
Регистрация: 14.04.2014
Сообщений: 25,504
10.06.2015, 16:02 13
Цитата Сообщение от silent_1991 Посмотреть сообщение
в случае с приставками _t эти строки будут юникодовскими
Чем они будут, зависит от настроек проекта.

А чтобы "Привет" выводился, надо сделать так:
C++
1
2
wcout.imbue(locale("rus_RUS.866"));
wcout << L"Привет";
Так же для wcin.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.06.2015, 16:02

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Int _tmain(int argc, _TCHAR* argv[]) и др
Добрый день! При компилировании кода, где присутствует данная строчка int _tmain(int argc,...

что такое int argc, char *argv[] в качестве параметров главной (main) функции?
И зачем

Почему _TCHAR выдает ошибку int _tmain(int argc, _TCHAR* argv[])
// ConsoleApplication42.cpp: определяет точку входа для консольного приложения. // #include...

Что означает строка int *a = new int[n + 1]?
Что означает строчка int *a = new int; И какую функцию она выполняет в коде(решето Эратосфена)?...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.