|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|
Использование return в main11.08.2017, 12:33. Показов 3226. Ответов 32
Метки нет (Все метки)
Если возвращаем 0 то это означает что прога норм завершилась, иначе значит были какие то ошибки, это понятно.
Но зачем ОС нужны эти коды? Чего она с ними делает? Можно ли к этим кодам получить доступ из третьей программы?
0
|
|
| 11.08.2017, 12:33 | |
|
Ответы с готовыми решениями:
32
Почему в одних случаях пишут void main(), а в других случаях int main() {return 1;} `main' must return `int'
|
|
|
||
| 12.08.2017, 18:04 | ||
|
4
|
||
|
Заблокирован
|
||||
| 12.08.2017, 21:39 | ||||
|
0
|
||||
|
923 / 639 / 198
Регистрация: 08.09.2013
Сообщений: 1,693
|
||
| 12.08.2017, 22:39 | ||
|
Здесь в теме немного другая интрига. Адепты MS занялись творческим переводом с английского, чтобы доказать, что эта самая void main() не нарушает стандарт, а только является особенностью реализации. С другой стороны, это дополнение есть не просит и никому сильно не мешает. Кто-то здесь на форуму доказывал, что ругань Мелкосовтвского компилятора на strcpy() с требованием заметить ее на strcpy_s() тоже соответствует стандарту. Только они обосновывали это соображениями безопасности, а не тонкостями лингвистики.
0
|
||
|
|
||
| 12.08.2017, 23:41 | ||
|
0
|
||
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|
| 13.08.2017, 10:41 [ТС] | |
|
Evg,
А каким образом происходит поиск этого значения? Насколько я понимаю т.к функция мейн может быть войд делать вызов под капотом code = main() было бы не корректным. Второй вариант(более менее похожий на правду) это создание указателя в той самой функции на конкретный адрес возврата, и чтение данных путём разыменования. Но адреса при каждом перезапуске меняются. Как вызывающая сторона знает где именно лежит нужное значение? Пока первое что пришло в голову это то что т.к программы используют виртуальные адреса а не физические, ОС при выделении виртуальных адресов для программы сама выделяет адрес возврата этого кода, который можно получить с помощью какого нибудь системного вызова... Кстати не подскажешь где сорцы этой штуки можно глянуть?
0
|
|
|
923 / 639 / 198
Регистрация: 08.09.2013
Сообщений: 1,693
|
||
| 13.08.2017, 12:45 | ||
|
"Съевший собаку" на дизассемблированиии Evg может найдет время описать вам действия Мксофт-компилятора детальнее.
1
|
||
|
Модератор
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
|
||||||||||||||||||||||||||||||||||||||||||||||
| 13.08.2017, 13:55 | ||||||||||||||||||||||||||||||||||||||||||||||
|
написал две проги (VS2008)
для первой точка входа в программу
функция main
void main компилятор заменил на int mainдобавив
4
|
||||||||||||||||||||||||||||||||||||||||||||||
|
Модератор
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
|
|
| 13.08.2017, 14:13 | |
|
0
|
|
|
|
||
| 13.08.2017, 23:07 | ||
|
Добавлено через 33 минуты Ну и чтобы пощупать вживую, можно это проверить на модели этого самого: C /* Файл t1.c */ #include <stdio.h> extern int my_main (void); int main (void) { int r; r = my_main (); printf ("%d\n", r); return 0; } C /* Файл t2.c */ int A = 5, B = 6; void my_main (void) { /* Сюда добавим пофиг какой код, лишь бы оптимизатор его не вытравил */ int i; for (i = 0; i < A; i++) B += A; } Code $ gcc t1.c t2.c
$ ./a.exe
5
1
|
||
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|
| 14.08.2017, 00:04 [ТС] | |
|
Evg,
Спасибо! А что за регистр %eax? Я встречал просто eax, без процента
0
|
|
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|
| 14.08.2017, 00:38 | |
|
1
|
|
| 14.08.2017, 00:38 | |
|
Ошибка main' must return 'int' В чём смысл return в main()? Ошыбка File1.cpp(29): E2467 'main()' cannot return a value int main() и его return(узнать код завершения программы в cmd) Использование инструкции return Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет.
Но обычно это 50 лет и более.
Наверное, закисление почвы происходит сезонно в средней. . .
|
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи.
Через несколько переработок от PHP кода к C89 (надеюсь, 89).
Но довольно запутанно получилось. Код для Linux.
Но если убрать time и то, что с ним. . .
|
|
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки
Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
|
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы
Всем привет! Хочу поделиться свежим (и довольно. . .
|
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
|
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения:
- добавлена многоязычность
- добавлено снятие скриншотов
- добавлено поддержание бафов хождения по воде (для жреца, дк и шамана)
- и так, по. . .
|