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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Andrey040601
 Аватар для Andrey040601
2 / 2 / 3
Регистрация: 13.07.2014
Сообщений: 127
Завершенные тесты: 5
#1

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

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

В книге И.Ш. Хабибуллина "Программирование на языке высокого уровня C/C++" во всех примерах пишут так:
C++
1
2
3
4
main()
{
 
}
Компилятор не дает написать main без int. Ошибка в книге, или в С так можно?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
КОП
348 / 280 / 86
Регистрация: 15.08.2010
Сообщений: 759
25.08.2014, 18:00     Компилятор не дает написать main без int. Ошибка в книге, или в С так можно? #2
Ошибка 1 error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию.
может его компилятор поддерживает int по умолчанию?
gru74ik
Модератор
Эксперт CЭксперт С++
 Аватар для gru74ik
3840 / 1598 / 187
Регистрация: 20.02.2013
Сообщений: 4,596
Записей в блоге: 21
25.08.2014, 18:25     Компилятор не дает написать main без int. Ошибка в книге, или в С так можно? #3
Цитата Сообщение от Andrey040601 Посмотреть сообщение
Компилятор не дает написать main без int.
Вроде как в старых компиляторах, когда ещё Си без плюсов, можно было. Мог напутать, но вроде так.
DrOffset
6817 / 4028 / 924
Регистрация: 30.01.2014
Сообщений: 6,847
25.08.2014, 18:37     Компилятор не дает написать main без int. Ошибка в книге, или в С так можно? #4
Andrey040601, это неявный int. В С поддерживается, В С++ - нет.

Цитата Сообщение от gru74ik Посмотреть сообщение
Вроде как в старых компиляторах
Это и в новых компиляторах. Просто в С, а не С++.
Senarist
36 / 36 / 10
Регистрация: 14.03.2014
Сообщений: 547
25.08.2014, 18:40     Компилятор не дает написать main без int. Ошибка в книге, или в С так можно? #5
Andrey040601 цитата из книги С. Праты
"Во многих существующих программах используется классическая форма записи заголовка функции в стиле С:
main()
В классическом С опускание возвращаемого типа равнозначно тому, что функция имеет тип int. Однако в языке С++ от такого подхода отказались."
ion
Заблокирован
25.08.2014, 21:13     Компилятор не дает написать main без int. Ошибка в книге, или в С так можно? #6
Код действительно на сях.
В Visual Studio создайте пустой проект, и создайте файл исходного кода с расширением .c а не .cpp
Тогда это приложение будет компилироваться в режиме си и такие коды в нем будут работать.
Andrey040601
 Аватар для Andrey040601
2 / 2 / 3
Регистрация: 13.07.2014
Сообщений: 127
Завершенные тесты: 5
25.08.2014, 21:25  [ТС]     Компилятор не дает написать main без int. Ошибка в книге, или в С так можно? #7
Дело в том, что первая часть книги по C. Там пишут main(), однако вторая часть по C++ и там тоже пишут main()
ValeryS
Модератор
6449 / 4915 / 451
Регистрация: 14.02.2011
Сообщений: 16,297
25.08.2014, 21:29     Компилятор не дает написать main без int. Ошибка в книге, или в С так можно? #8
Цитата Сообщение от Andrey040601 Посмотреть сообщение
Дело в том, что первая часть книги по C. Там пишут main(), однако вторая часть по C++ и там тоже пишут main()
книга какого года?
в общем это не правильно
и в Си это оставили чтобы не переписывать старые программы.
короче так писать не стоит, даже в Си
Andrey040601
 Аватар для Andrey040601
2 / 2 / 3
Регистрация: 13.07.2014
Сообщений: 127
Завершенные тесты: 5
25.08.2014, 21:30  [ТС]     Компилятор не дает написать main без int. Ошибка в книге, или в С так можно? #9
Цитата Сообщение от ValeryS Посмотреть сообщение
книга какого года?
2006-ого года
ValeryS
Модератор
6449 / 4915 / 451
Регистрация: 14.02.2011
Сообщений: 16,297
25.08.2014, 21:32     Компилятор не дает написать main без int. Ошибка в книге, или в С так можно? #10
Цитата Сообщение от Andrey040601 Посмотреть сообщение
2006-ого года
и ни чего более?
типа "издание второе стереотипное"
странно
тогда как говорил профессор Преображенский "В печку её"
Andrey040601
 Аватар для Andrey040601
2 / 2 / 3
Регистрация: 13.07.2014
Сообщений: 127
Завершенные тесты: 5
26.08.2014, 09:28  [ТС]     Компилятор не дает написать main без int. Ошибка в книге, или в С так можно? #11
Цитата Сообщение от ValeryS Посмотреть сообщение
тогда как говорил профессор Преображенский "В печку её"
И деньги в печку
Tulosba
:)
Эксперт С++
4384 / 3227 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
26.08.2014, 09:56     Компилятор не дает написать main без int. Ошибка в книге, или в С так можно? #12
Мнение Страуструпа по теме: http://www.stroustrup.com/bs_faq2.html#void-main
gru74ik
26.08.2014, 09:58
  #13

Не по теме:

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

Tulosba
26.08.2014, 10:01
  #14

Не по теме:

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

gru74ik
26.08.2014, 10:02
  #15

Не по теме:

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

korvin_
 Аватар для korvin_
1372 / 1143 / 168
Регистрация: 28.04.2012
Сообщений: 4,106
26.08.2014, 10:38     Компилятор не дает написать main без int. Ошибка в книге, или в С так можно? #16
Цитата Сообщение от Tulosba Посмотреть сообщение
Мнение Страуструпа по теме
Он так странно пишет, будто в Bell Labs не работа(л|ет) и о Plan 9 ничего не знает.
gru74ik
Модератор
Эксперт CЭксперт С++
 Аватар для gru74ik
3840 / 1598 / 187
Регистрация: 20.02.2013
Сообщений: 4,596
Записей в блоге: 21
26.08.2014, 10:53     Компилятор не дает написать main без int. Ошибка в книге, или в С так можно? #17
Цитата Сообщение от korvin_ Посмотреть сообщение
Он так странно пишет, будто в Bell Labs не работа(л|ет) и о Plan 9 ничего не знает.
А чего у них там повсюду void main() ?
MrGluck
Ворчун
Эксперт CЭксперт С++
 Аватар для MrGluck
6219 / 3464 / 423
Регистрация: 29.11.2010
Сообщений: 9,176
26.08.2014, 11:08     Компилятор не дает написать main без int. Ошибка в книге, или в С так можно? #18
Книгу сжечь.

Для 2006 года пора бы старпёрам высунуть нос из окна.
Читайте нормальные книги дабы потом не пришлось переучиваться
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.

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.08.2014, 13:32     Компилятор не дает написать main без int. Ошибка в книге, или в С так можно?
Еще ссылки по теме:

Какой новые синтаксис: int main() VS. void main() C++
Компилятор сообщает об отсутствии точки с запятой в строке int main() { C++
Какая разница между int main и void main? C++
C++ Использование int или void в качестве возвращаемого типа для main()
Ошибка In function `int main()': Разберемся в коде вместе C++

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

Или воспользуйтесь поиском по форуму:
gru74ik
Модератор
Эксперт CЭксперт С++
 Аватар для gru74ik
3840 / 1598 / 187
Регистрация: 20.02.2013
Сообщений: 4,596
Записей в блоге: 21
26.08.2014, 13:32     Компилятор не дает написать main без int. Ошибка в книге, или в С так можно? #20
Цитата Сообщение от korvin_ Посмотреть сообщение
Он так странно пишет, будто в Bell Labs не работа(л|ет) и о Plan 9 ничего не знает.
Цитата Сообщение от gru74ik Посмотреть сообщение
А чего у них там повсюду void main() ?
Цитата Сообщение от korvin_ Посмотреть сообщение
Да.
Ну, может он от такого подхода совсем не в восторге? Тогда как раз и понятно, почему у себя в FAQ'e он так пишет.
Yandex
Объявления
26.08.2014, 13:32     Компилятор не дает написать main без int. Ошибка в книге, или в С так можно?
Ответ Создать тему
Опции темы

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