Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
4 / 4 / 3
Регистрация: 13.07.2014
Сообщений: 129
1

Компилятор не дает написать main без int. Ошибка в книге, или в С так можно?

25.08.2014, 17:57. Просмотров 2051. Ответов 21
Метки нет (Все метки)

В книге И.Ш. Хабибуллина "Программирование на языке высокого уровня C/C++" во всех примерах пишут так:
C++
1
2
3
4
main()
{
 
}
Компилятор не дает написать main без int. Ошибка в книге, или в С так можно?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.08.2014, 17:57
Ответы с готовыми решениями:

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

int main() или int main(void)?
чем отличается : не сообщаю о наличии аргументов функция не принимает никаких аргументов.......

Компилятор сообщает об отсутствии точки с запятой в строке int main() {
int main() {; Я поставил точку с запятой но проблемма осталась почему ?

Int main или main
нужно ли писать int main? если в функции main есть всё необходимое.

21
1099 / 772 / 217
Регистрация: 15.08.2010
Сообщений: 2,145
25.08.2014, 18:00 2
Ошибка 1 error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию.
может его компилятор поддерживает int по умолчанию?
0
Модератор
Эксперт CЭксперт С++
5022 / 2204 / 330
Регистрация: 20.02.2013
Сообщений: 5,599
Записей в блоге: 24
25.08.2014, 18:25 3
Цитата Сообщение от Andrey040601 Посмотреть сообщение
Компилятор не дает написать main без int.
Вроде как в старых компиляторах, когда ещё Си без плюсов, можно было. Мог напутать, но вроде так.
0
13474 / 7137 / 1712
Регистрация: 30.01.2014
Сообщений: 11,931
25.08.2014, 18:37 4
Andrey040601, это неявный int. В С поддерживается, В С++ - нет.

Цитата Сообщение от gru74ik Посмотреть сообщение
Вроде как в старых компиляторах
Это и в новых компиляторах. Просто в С, а не С++.
1
51 / 55 / 34
Регистрация: 14.03.2014
Сообщений: 756
25.08.2014, 18:40 5
Andrey040601 цитата из книги С. Праты
"Во многих существующих программах используется классическая форма записи заголовка функции в стиле С:
main()
В классическом С опускание возвращаемого типа равнозначно тому, что функция имеет тип int. Однако в языке С++ от такого подхода отказались."
1
Заблокирован
25.08.2014, 21:13 6
Код действительно на сях.
В Visual Studio создайте пустой проект, и создайте файл исходного кода с расширением .c а не .cpp
Тогда это приложение будет компилироваться в режиме си и такие коды в нем будут работать.
0
4 / 4 / 3
Регистрация: 13.07.2014
Сообщений: 129
25.08.2014, 21:25  [ТС] 7
Дело в том, что первая часть книги по C. Там пишут main(), однако вторая часть по C++ и там тоже пишут main()
0
Модератор
Эксперт по электронике
8261 / 6122 / 819
Регистрация: 14.02.2011
Сообщений: 21,254
25.08.2014, 21:29 8
Цитата Сообщение от Andrey040601 Посмотреть сообщение
Дело в том, что первая часть книги по C. Там пишут main(), однако вторая часть по C++ и там тоже пишут main()
книга какого года?
в общем это не правильно
и в Си это оставили чтобы не переписывать старые программы.
короче так писать не стоит, даже в Си
0
4 / 4 / 3
Регистрация: 13.07.2014
Сообщений: 129
25.08.2014, 21:30  [ТС] 9
Цитата Сообщение от ValeryS Посмотреть сообщение
книга какого года?
2006-ого года
0
Модератор
Эксперт по электронике
8261 / 6122 / 819
Регистрация: 14.02.2011
Сообщений: 21,254
25.08.2014, 21:32 10
Цитата Сообщение от Andrey040601 Посмотреть сообщение
2006-ого года
и ни чего более?
типа "издание второе стереотипное"
странно
тогда как говорил профессор Преображенский "В печку её"
0
4 / 4 / 3
Регистрация: 13.07.2014
Сообщений: 129
26.08.2014, 09:28  [ТС] 11
Цитата Сообщение от ValeryS Посмотреть сообщение
тогда как говорил профессор Преображенский "В печку её"
И деньги в печку
0
:)
Эксперт С++
4763 / 3257 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
26.08.2014, 09:56 12
Мнение Страуструпа по теме: http://www.stroustrup.com/bs_faq2.html#void-main
0
sourcerer
26.08.2014, 09:58
  #13

Не по теме:

Tulosba, посмотрел на твой статус под ником и в голове стала вертеться фраза "чеширский код" :D

0
Tulosba
26.08.2014, 10:01
  #14

Не по теме:

Цитата Сообщение от gru74ik Посмотреть сообщение
"чеширский код"
это про смайлик что ли? :)

0
sourcerer
26.08.2014, 10:02
  #15

Не по теме:

Цитата Сообщение от Tulosba Посмотреть сообщение
это про смайлик что ли?
ага :)

0
3189 / 2257 / 413
Регистрация: 28.04.2012
Сообщений: 7,594
26.08.2014, 10:38 16
Цитата Сообщение от Tulosba Посмотреть сообщение
Мнение Страуструпа по теме
Он так странно пишет, будто в Bell Labs не работа(л|ет) и о Plan 9 ничего не знает.
1
Модератор
Эксперт CЭксперт С++
5022 / 2204 / 330
Регистрация: 20.02.2013
Сообщений: 5,599
Записей в блоге: 24
26.08.2014, 10:53 17
Цитата Сообщение от korvin_ Посмотреть сообщение
Он так странно пишет, будто в Bell Labs не работа(л|ет) и о Plan 9 ничего не знает.
А чего у них там повсюду void main() ?
0
Форумчанин
Эксперт CЭксперт С++
8159 / 5007 / 1436
Регистрация: 29.11.2010
Сообщений: 13,458
26.08.2014, 11:08 18
Книгу сжечь.

Для 2006 года пора бы старпёрам высунуть нос из окна.
Читайте нормальные книги дабы потом не пришлось переучиваться
0
korvin_
26.08.2014, 13:27
  #19

Не по теме:

Цитата Сообщение от gru74ik Посмотреть сообщение
А чего у них там повсюду void main() ?
Да.

Кликните здесь для просмотра всего текста
http://doc.cat-v.org/plan_9/programming/c_programming_in_plan_9
exits and the void return from main require a bit of explanation. The traditional way of representing errors and status returns in C is with numbers: a return from main or the argument to exit represents a status return from a program, and errno stores information about error returns from functions. The traditional behavior is to have zero mean no error and any other value mean error; ANSI C defines EXIT_SUCCESS and EXIT_FAILURE for status returns from programs.

This gets restricted very quickly. ANSI C only defines three standard values for errno (domain error, range error, and illegal multibyte sequence) and two values for status return. And sometimes an integer won’t tell you enough. For example, let’s take the UNIX lseek system call, which manipulates the file read/write position:

long lseek(int fd, long offset, int from);

If any argument is invalid (for example, from not 0, 1, or 2), lseek returns with errno set to EINVAL (specific to UNIX). But this doesn’t tell you which argument was invalid, or how many; it only says that something was not right. We can add the appropriate errno values to resolve this problem. But what about a library that defines over 1,000 values for errno? On machines with small int sizes, this chokes your program and defeats the purposes of both sides.

A better idea is to give the programmer the ability to handle any error that comes in without worry of losing standards compliance or clarity, and to generate any error without falling into a surfeit of possibility. So the designers of Plan 9 decided to use strings instead of numbers. Each program has an error string which is set by routines when an error occurs. And each program returns a string to the host environment with the exits system call. The value given to exits can be accessed from rc through the environment variable $status.

0
Модератор
Эксперт CЭксперт С++
5022 / 2204 / 330
Регистрация: 20.02.2013
Сообщений: 5,599
Записей в блоге: 24
26.08.2014, 13:32 20
Цитата Сообщение от korvin_ Посмотреть сообщение
Он так странно пишет, будто в Bell Labs не работа(л|ет) и о Plan 9 ничего не знает.
Цитата Сообщение от gru74ik Посмотреть сообщение
А чего у них там повсюду void main() ?
Цитата Сообщение от korvin_ Посмотреть сообщение
Да.
Ну, может он от такого подхода совсем не в восторге? Тогда как раз и понятно, почему у себя в FAQ'e он так пишет.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.08.2014, 13:32

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

В чем разница между int main(){} и int main(void){}?
Только недавно начал изучать язык, и появилось несколько вопросов: 1) в чем разница между int...

int main работает без return
Здравствуйте! Собственно вопрос относительно темы))) почему компилятор пропускает такое...

Компилятор выдает ошибку " in function int main ()"
#include <cstdlib> #include <iostream> using namespace std; int main() { int...

Ошибка в программе, адресная арифметика(Компилятор выдает ошибку "Cannot conver int* to int")
#include <stdio.h> #include <time.h> #include <stdlib.h> #include <alloc.h> int...


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

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

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