Форум программистов, компьютерный форум CyberForum.ru

Функция main () {} - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.64
Leeto
 Аватар для Leeto
7 / 7 / 0
Регистрация: 23.12.2011
Сообщений: 372
Записей в блоге: 1
18.06.2012, 12:09     Функция main () {} #1
Есть разные варианты синтаксиса функции мэйн

1.void main () {}
2. int main () {return 0;}
3. int main() {}
4. main (void) {}
5. int main(int argc,char**argv)
6. int main(int argc,char*argv[])


C++
1
2
3
4
5
#include <iostream>
using namespace std;
bla-bla main (bla-bla) {
system ("pause");
}
Мой вопрос какой синтаксис лучше и чем это все хозяйство отличается
Я где то прочитал что по ИСО надо юзать 2. int main () {return 0;} все остальное пережитки прошлого или что то типа того
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.06.2012, 12:09     Функция main () {}
Посмотрите здесь:

C++ Функция main
C++ функция main()
Функция main C++
Функция main с аргументами C++
C++ Функция main() и ситаксические ошибки
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dr.curse
 Аватар для dr.curse
386 / 342 / 16
Регистрация: 11.10.2010
Сообщений: 1,907
18.06.2012, 12:12     Функция main () {} #2
Leeto, по стандарту мейн должен возвращать int, а его параметры нужно указывать если работаещь с коммандной строкой
вот наиболее полный вид
C
1
int main(int argc,char *argv[],char *envp[])
Harmonster
9 / 9 / 3
Регистрация: 20.05.2012
Сообщений: 101
18.06.2012, 12:14     Функция main () {} #3
int main () - возращает число, с типом int
void main () - не возвращает вообще, ничего
dr.curse
 Аватар для dr.curse
386 / 342 / 16
Регистрация: 11.10.2010
Сообщений: 1,907
18.06.2012, 12:18     Функция main () {} #4
Цитата Сообщение от Harmonster Посмотреть сообщение
void main () - не возвращает вообще, ничего
но он запрещен по стандарту
kent
Нуб со стажем
 Аватар для kent
36 / 34 / 2
Регистрация: 19.02.2012
Сообщений: 118
18.06.2012, 15:26     Функция main () {} #5
int main(int argc,char **argv){return 0;}
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
18.06.2012, 18:16     Функция main () {} #6
Цитата Сообщение от aram_gyumri Посмотреть сообщение
char *envp[]
Нестандартно.
1. Запрещено, ибо main обязан возвращать int
2, 3. - эквивалентны.
4. В с++ не работает правило неявного int, поэтому так писать нельзя.
5, 6 - практически эквивалентны.
dr.curse
 Аватар для dr.curse
386 / 342 / 16
Регистрация: 11.10.2010
Сообщений: 1,907
18.06.2012, 19:30     Функция main () {} #7
Цитата Сообщение от diagon Посмотреть сообщение
Нестандартно.
почему, он ведь и в никсах и в венде и на маке работает?
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
18.06.2012, 19:40     Функция main () {} #8
Цитата Сообщение от aram_gyumri Посмотреть сообщение
почему, он ведь и в никсах и в венде и на маке работает?
Работает, но в стандарте такого нету.
Т.е. компиляторы не обязаны поддерживать этот параметр.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,399
18.06.2012, 20:47     Функция main () {} #9
Иногда полезно писать
5. int main(int argc,char**argv)
Например, при работе с OpenGL. Можно использовать аргументы и в других целях.
Обычно пишут int main() в С++ и int main(void) в С.
void main запрещен по стандарту в С++, но С до сих пор разрешает такое объявление для поддержки ранних программ. Если в конце main явно не указать return 0, то она вернет 0 по-умолчанию.
tomaticus
 Аватар для tomaticus
46 / 46 / 2
Регистрация: 02.01.2011
Сообщений: 505
18.06.2012, 20:51     Функция main () {} #10
MrGluck, с OpenGl работал, и соглашусь, там необходимы
C++
1
int argc,char**argv
А про остальное я не понял. Я спорить не собираюсь, просто спрашиваю у тех, кто хорошо с этим знаком. Написал уже два проекта, один с opengl, второй в консоли. В течении прошлого года, у меня был "быдлокод", все писалось в одной функции. Сейчас уже немного начал прозревать, и сортирую код по функциям, и по *.h. Дак вот вопрос заключается в том, почему нельзя писать :
C++
1
2
3
4
void NextFunction()
{
cout << "Next";
}
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,399
18.06.2012, 20:59     Функция main () {} #11
Просто ввод-вывод в функции считается моветоном (дурной тон). Это делает их применимыми в узком кругу задач, желательно избегать подобных вещей.

Задача функций - работа с данными.
tomaticus
 Аватар для tomaticus
46 / 46 / 2
Регистрация: 02.01.2011
Сообщений: 505
18.06.2012, 21:11     Функция main () {} #12
т.е. чтобы казаться "кулцпрогеромм" стоит писать :
C++
1
2
3
4
5
int NextFunction()
{
     cout << "Next";
     return 0;
}
а не так :

C++
1
2
3
4
void NextFunction()
{
cout << "Next";
}
?
dr.curse
 Аватар для dr.curse
386 / 342 / 16
Регистрация: 11.10.2010
Сообщений: 1,907
18.06.2012, 21:23     Функция main () {} #13
tomaticus, нет, правилнее будет так
C++
1
2
3
4
5
6
7
8
9
char *NextFunction()
{
    return "Next";
}
int main()
{
    cout << NextFunction();
    return 0;
}
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
18.06.2012, 21:24     Функция main () {} #14
Тогда уж
C++
1
2
3
4
const char *NextFunction()
{
    return "Next";
}
tomaticus
 Аватар для tomaticus
46 / 46 / 2
Регистрация: 02.01.2011
Сообщений: 505
18.06.2012, 21:29     Функция main () {} #15
Да вы смеетесь?)
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
18.06.2012, 21:39     Функция main () {} #16
Цитата Сообщение от tomaticus Посмотреть сообщение
Да вы смеетесь?)
Почему? Информацию, которая касалась исключительно функции main ты зачем-то спроецировал на функцию с другим именем.
Касательно вывода в функциях — он там, разумеется, может быть, но если функция предназначена именно для вывода, а не, скажем, для расчёта чего-нибудь, что потом надо будет вывести. В последнем случае в функции должен быть только расчёт и возврат результата, а вывод где-нибудь в другом месте.
Paporotnik
383 / 227 / 7
Регистрация: 06.07.2011
Сообщений: 512
18.06.2012, 22:00     Функция main () {} #17
в функциональном программировании есть понятие чистых функций - функций, результат действий которых очевиден и является результатом работы с входными аргументами. т.е. изменять состояние программы "в тайне" они не могут. в Haskell это чуть ли не в идеологию возведено. исключения только там, где без них не обойтись, а-ля ф-ции ввода/вывода.
вот и в других языках очень хороший тон стараться проектировать ф-ции так же.
Avazart
 Аватар для Avazart
6897 / 5137 / 252
Регистрация: 10.12.2010
Сообщений: 22,570
Записей в блоге: 17
19.06.2012, 03:47     Функция main () {} #18
Ну то что надо то понятно, но в чем задумка с возвратом нуля?...

Как я понимаю возврат поидее должен как нибудь где нибудь использоваться ...
Может при порождении процессов ???
enk
 Аватар для enk
45 / 44 / 7
Регистрация: 16.06.2012
Сообщений: 177
19.06.2012, 04:26     Функция main () {} #19
Цитата Сообщение от Avazart Посмотреть сообщение
Ну то что надо то понятно, но в чем задумка с возвратом нуля?...

Как я понимаю возврат поидее должен как нибудь где нибудь использоваться ...
Может при порождении процессов ???
Как вариант:
Произошла ошибка, явно требующая перезапуска программы. Вместо "halt(1)" используешь "return 0;". Мне, пока что, иначе не приходилось использовать, может гуру ещё расскажут)
А вот, кстати, топик на эту тему Стандарт или для чего нужен return 0 ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.06.2012, 10:43     Функция main () {}
Еще ссылки по теме:

функция main обработка параметров командной строки C++
C++ Не работает функция вывода в main()
C++ Функция не видит переменных из main

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

Или воспользуйтесь поиском по форуму:
Schizorb
 Аватар для Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
19.06.2012, 10:43     Функция main () {} #20
tomaticus, по-моему, вы немного запутались. По стандарту, функция main должна возвращать int. К остальным-то функциям это не имеет отношения. То есть, не нужно от фонаря к каждой функции приписывать int и возвращать 0
Yandex
Объявления
19.06.2012, 10:43     Функция main () {}
Ответ Создать тему
Опции темы

Текущее время: 03:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru