|
|
|
Объявления функций До/После main(), файлы (*.cpp, *.h)24.01.2018, 12:47. Показов 11902. Ответов 22
Метки нет (Все метки)
Всем привет!
В некоторых источниках пишут, что объявление функций после main() - признак хорошего тона. Хотя и нужно объявлять прототипы. Хотел узнать Ваше мнение по этому вопросу. Сам main() объявляю в конце кода из соображения экономии кода на прототипах. Можно вынести функции и в отдельные файлы (*.cpp, *.h) - здесь тоже интересно Ваше мнение.
0
|
|
| 24.01.2018, 12:47 | |
|
Ответы с готовыми решениями:
22
Main.cpp: In function ‘int main()’: main.cpp:10:1: error: ‘then’ was not declared in this scope Разбить main.cpp на файлы Main.cpp In file included from main.cpp |
|
"C with Classes"
|
|
| 24.01.2018, 13:05 | |
|
bedvit, лично мне нравится когда в функции объявляются в *.h (близкие по смыслу), а определяются уже в отдельных *.cpp . Причем если функция огромная, что не есть хорошо, то ее желательно в отдельном *.cpp определить.
0
|
|
|
13 / 15 / 5
Регистрация: 16.10.2016
Сообщений: 206
|
|||||||
| 24.01.2018, 13:07 | |||||||
|
Это может действовать до поры до времени. Лучше использовать прототипы тогда все функции будут известны сразу. А так если вам вдруг понадобится сделать так:
А еще имея прототипы, можно легко посмотреть как использовать какую-либо функцию не заглядывая дальше в файл.
1
|
|||||||
|
techpriest
634 / 213 / 57
Регистрация: 27.02.2014
Сообщений: 1,180
|
|
| 24.01.2018, 13:23 | |
|
Преимущество объявление main в начале файла - точка входа в программу сразу бросается в глаза.
Больше преимуществ нету.
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 24.01.2018, 13:32 | |||
|
можно забить и не париться. серьёзные вещи делают по принципу:
0
|
|||
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
|||||||
| 24.01.2018, 13:46 | |||||||
int f(int n, char *sss) { .... } Добавлено через 11 минут По поводу размещения реализаций я не знаю никаких законов. А о прототипах (объявлениях) можно сказать только, что они должны быть видны в точке вызова. Правда, реализация функции по совместительству является и ее прототипом. Но чтобы не было путаницы, я бы разделил прототип и реализацию.
1
|
|||||||
|
Неэпический
|
||
| 24.01.2018, 14:01 | ||
|
1
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 24.01.2018, 14:22 | ||
|
мне вот не очевидно, как это так: объявление функции есть, а прототипа нету)
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 24.01.2018, 15:03 | |||
|
смотрите: вот мне не понятно, как это? объявление есть, а прототипом оно не является. нужны примеры когда является. и когда не является.
0
|
|||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,819
|
|||||||
| 24.01.2018, 17:21 | |||||||
foo() можно с успехом вызвать foo(void), но прототипом она не является.Вот иллюстрация этого правила в gcc: http://rextester.com/TEZG4079
2
|
|||||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
| 24.01.2018, 17:44 | |
|
0
|
|
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,819
|
||
| 24.01.2018, 18:13 | ||
![]() В Си же нет перегрузки, там одного имени достаточно для осуществления связывания. Не по теме:
2
|
||
|
|
|
| 24.01.2018, 19:06 [ТС] | |
|
Правильно ли я понимаю, что и в Си и в С++ нужен прототип функции до точки входа, если функция "реализована" ниже точки входа (main() )? Исключений нет?
Байт, на этом ресурсе про объявление функций до/после main(), что в контексте вашего сообщения - выражение, видимо, не верно, а верен термин "реализация", еще используют термин "определение" (к примеру на msdn.microsoft.com). Как, все же, правильно?
0
|
|
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,819
|
|||
| 24.01.2018, 19:21 | |||
declaration и definition, устоявшимися переводами на русский которых являются объявление и определение соответственно.Добавлено через 8 минут Declaration - это то, что тут назвали "прототип". А Definition - это то, что тут назвали "реализация". При этом по правилам языка С++ declaration также является definition, кроме определенно оговоренных случаев.
1
|
|||
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
||
| 24.01.2018, 19:56 | ||
|
Не по теме: Народ до сих пор бьется, что ж такое - натуральные числа. Остроголовые говорят, что они без нуля. Тупоголовые причисляют к ним ноль. Но пока это не очень мешает развитию теории чисел. Добавлено через 2 минуты
0
|
||
|
|
|
| 24.01.2018, 20:12 [ТС] | |
|
Байт, не спора ради, а токма понимания для. Что бы понимать друг друга. Ибо тема элементарная на первый взгляд, но есть чему поучиться мне (многому мне ещё учиться).
0
|
|
| 24.01.2018, 20:12 | |
|
Помогаю со студенческими работами здесь
20
Есть три файла. файл main.cpp и Source.cpp знают только Header.h, так как он подключен. как же подключается Source.cpp Как передать переменные и массивы из main.cpp в mainwindow.cpp? Включение библиотек в main.cpp и my_func.cpp Подключение файлов main.cpp some.cpp some.h Вот: source_file.cpp: In function 'int main()': source_file.cpp:10:12: error: 'strlen' was not declared in this scope Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
|
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут
Суть:
- Группа наркоманов из 10 человек.
- Только один инфицирован ВИЧ.
- Колются одной иглой.
- Колются раз в день.
- Колются последовательно через. . .
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|