Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
Leeto
7 / 7 / 3
Регистрация: 23.12.2011
Сообщений: 372
Записей в блоге: 1
1

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

18.06.2012, 12:09. Просмотров 2439. Ответов 22
Метки нет (Все метки)

Есть разные варианты синтаксиса функции мэйн

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;} все остальное пережитки прошлого или что то типа того
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.06.2012, 12:09
Ответы с готовыми решениями:

Функция main
Ребят задание скомпилировать код в командной строке vc++ и запустить...

функция main()
может ли функция возвращать функцию int z() { ....... //надо типо того...

Функция main
В одномерном массиве, вводимом с клавиатуры и состоящем из 10 вещественных...

Функция main с аргументами
Приветствую, подскажите где именно указывать параметры аргументов(int argc,...

Функция не видит переменных из main
Составьте программу, которая будет выводить на экран два разных сообщения...

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

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

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

Как я понимаю возврат поидее должен как нибудь где нибудь использоваться ...
Может при порождении процессов ???
0
enk
46 / 45 / 26
Регистрация: 16.06.2012
Сообщений: 177
19.06.2012, 04:26 19
Цитата Сообщение от Avazart Посмотреть сообщение
Ну то что надо то понятно, но в чем задумка с возвратом нуля?...

Как я понимаю возврат поидее должен как нибудь где нибудь использоваться ...
Может при порождении процессов ???
Как вариант:
Произошла ошибка, явно требующая перезапуска программы. Вместо "halt(1)" используешь "return 0;". Мне, пока что, иначе не приходилось использовать, может гуру ещё расскажут)
А вот, кстати, топик на эту тему Стандарт или для чего нужен return 0 ?
0
Schizorb
510 / 462 / 82
Регистрация: 07.04.2012
Сообщений: 869
Записей в блоге: 1
Завершенные тесты: 1
19.06.2012, 10:43 20
tomaticus, по-моему, вы немного запутались. По стандарту, функция main должна возвращать int. К остальным-то функциям это не имеет отношения. То есть, не нужно от фонаря к каждой функции приписывать int и возвращать 0
2
19.06.2012, 10:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.06.2012, 10:43

Не работает функция вывода в main()
вот кусок кода, где не работает первый printf(Rus(&quot;Выбери тип календаря&quot;)); -...

Функция main() и ситаксические ошибки
Доброго времени суток. Написал вот такую бредятину штуку: #include &lt;windows.h&gt;...

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


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

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

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