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

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

Восстановить пароль Регистрация
 
 
Andrey040601
 Аватар для Andrey040601
2 / 2 / 3
Регистрация: 13.07.2014
Сообщений: 127
Завершенные тесты: 5
25.08.2014, 17:57     Компилятор не дает написать main без int. Ошибка в книге, или в С так можно? #1
В книге И.Ш. Хабибуллина "Программирование на языке высокого уровня C/C++" во всех примерах пишут так:
C++
1
2
3
4
main()
{
 
}
Компилятор не дает написать main без int. Ошибка в книге, или в С так можно?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.08.2014, 17:57     Компилятор не дает написать main без int. Ошибка в книге, или в С так можно?
Посмотрите здесь:

C++ int main() или int main(void)?
В чем разница между int main(){} и int main(void){}? C++
Ошибка main' must return 'int' C++
Ошибка компиляции. int main() C++
Ошибка в программе, адресная арифметика(Компилятор выдает ошибку "Cannot conver int* to int") C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
КОП
348 / 280 / 86
Регистрация: 15.08.2010
Сообщений: 755
25.08.2014, 18:00     Компилятор не дает написать main без int. Ошибка в книге, или в С так можно? #2
Ошибка 1 error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию.
может его компилятор поддерживает int по умолчанию?
gru74ik
Модератор
 Аватар для gru74ik
3128 / 1354 / 167
Регистрация: 20.02.2013
Сообщений: 3,870
Записей в блоге: 18
25.08.2014, 18:25     Компилятор не дает написать main без int. Ошибка в книге, или в С так можно? #3
Цитата Сообщение от Andrey040601 Посмотреть сообщение
Компилятор не дает написать main без int.
Вроде как в старых компиляторах, когда ещё Си без плюсов, можно было. Мог напутать, но вроде так.
DrOffset
6461 / 3835 / 886
Регистрация: 30.01.2014
Сообщений: 6,630
25.08.2014, 18:37     Компилятор не дает написать main без int. Ошибка в книге, или в С так можно? #4
Andrey040601, это неявный int. В С поддерживается, В С++ - нет.

Цитата Сообщение от gru74ik Посмотреть сообщение
Вроде как в старых компиляторах
Это и в новых компиляторах. Просто в С, а не С++.
Senarist
33 / 33 / 10
Регистрация: 14.03.2014
Сообщений: 515
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
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,061
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
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,061
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
:)
Эксперт С++
4378 / 3221 / 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_
1328 / 1099 / 160
Регистрация: 28.04.2012
Сообщений: 3,926
26.08.2014, 10:38     Компилятор не дает написать main без int. Ошибка в книге, или в С так можно? #16
Цитата Сообщение от Tulosba Посмотреть сообщение
Мнение Страуструпа по теме
Он так странно пишет, будто в Bell Labs не работа(л|ет) и о Plan 9 ничего не знает.
gru74ik
Модератор
 Аватар для gru74ik
3128 / 1354 / 167
Регистрация: 20.02.2013
Сообщений: 3,870
Записей в блоге: 18
26.08.2014, 10:53     Компилятор не дает написать main без int. Ошибка в книге, или в С так можно? #17
Цитата Сообщение от korvin_ Посмотреть сообщение
Он так странно пишет, будто в Bell Labs не работа(л|ет) и о Plan 9 ничего не знает.
А чего у них там повсюду void main() ?
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
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() для программы C++
C++ Компилятор выдает ошибку " in function int main ()"
Компилятор сообщает об отсутствии точки с запятой в строке int main() { C++

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

Или воспользуйтесь поиском по форуму:
gru74ik
Модератор
 Аватар для gru74ik
3128 / 1354 / 167
Регистрация: 20.02.2013
Сообщений: 3,870
Записей в блоге: 18
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. Ошибка в книге, или в С так можно?
Ответ Создать тему
Опции темы

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