Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
Light Knight
 Аватар для Aaxenon
106 / 29 / 5
Регистрация: 03.06.2010
Сообщений: 361

разница в местоположении функции

07.09.2010, 19:55. Показов 2235. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
есть ли разница где писать, в начале или в конце кода?
например:
C++
1
2
3
4
5
6
7
8
9
10
#include <blabla>
int a(int b, int c)
{
blabla
}
int main()
{
int a, b;
int a(a,b);
}
а вот в конце, не уверен что так..
C++
1
2
3
4
5
6
7
8
9
10
11
#include <blabla>
int a()
int main()
{
int a, b;
int a(a,b);
}
int a(int b, int c)
{
blabla
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.09.2010, 19:55
Ответы с готовыми решениями:

Вывести информацию о местоположении в три строки
Приветствую уважаемые форумчане. Не знаю куда задать этот вопрос, либо в CSS либо в php. Вот Задал сюда. В общем есть php код ...

Разница в работе созданной функции и основной функции
Программа по выводу девсятичного представления двоичного кода не работает корректно в виде функции, аналогичный код в основной функции...

Следующий файл не может быть найден в указанном местоположении
следующий файл не может быть найден в указанном местоположении. Такое вот выплывает при загрузке того же интро. Что нажимать, переносить и...

10
 Аватар для radiohobbyt
192 / 190 / 15
Регистрация: 27.01.2009
Сообщений: 548
07.09.2010, 19:58
C
1
2
3
4
5
6
7
8
9
10
11
#include <blabla>
int a(int, int);
int main()
{
int a, b;
int a(a,b);
}
int a(int b, int c)
{
blabla
}
никакой. все для удобства.
1
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
07.09.2010, 22:42
Цитата Сообщение от RoY_Mu$T@nG Посмотреть сообщение
есть ли разница где писать, в начале или в конце кода?
например:
в вашем случае - без разницы, все-равно никакт работать не будет
0
Light Knight
 Аватар для Aaxenon
106 / 29 / 5
Регистрация: 03.06.2010
Сообщений: 361
08.09.2010, 18:09  [ТС]
Цитата Сообщение от RoY_Mu$T@nG Посмотреть сообщение
не уверен что так..
поправьте как правильно
0
Заблокирован
08.09.2010, 18:16
radiohobbyt,
C++
1
int a(a,b);//как так-то? :)
0
 Аватар для Impuls1989
6 / 6 / 0
Регистрация: 08.09.2010
Сообщений: 35
08.09.2010, 18:52
Исторически сложилось так, что сверху пишутся прототипы функций, а снизу их реализация. Не знаю как Вам, а мне приятнее видеть только названия функций сверху, и не мозолить себе глаза километрами бесполезного мне кода.
Объясню почему так сложилось.
Знаете ли Вы что делает #include <какой-нибудь хэдэр>? По сути когда вы нажмете на кнопку "скомпилировать" вместо инклуда подставятся все прототипы, которые в нем были записаны (что собственно и делает описание прототипа в варианте 2). С другой стороны, никто не запрещает Вам написать в хэдэре реализацию всей функции (вариант 1). Так что если делать все по уму, то наверное правильнее вариант № 2. Но опять таки повторюсь: все зависит от того, насколько вы хотите поиздеваться над человеком, который будет сопровождать Вашу программу.
1
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
09.09.2010, 04:15
на самом деле, когда прототипы уже есть, их не нужно делать потом (когда начинается перенос функций в другие файлы) и, в то же время, их можно сразу взять и перенести в соответствующий хедер

вот, а плюс написания функций сверху - это, когда файл открывается, то он сразу отматывается в конец и мы сразу видим main(), и не нужно мотать к ней; когда же функции внизу, то открывается последняя функция, то есть нужно мотать наверх, к main()
это без учёта статических функций, которые у меня снизу написать не получается, их прототипы не видят их
1
 Аватар для Impuls1989
6 / 6 / 0
Регистрация: 08.09.2010
Сообщений: 35
09.09.2010, 10:35
Цитата Сообщение от accept Посмотреть сообщение
это без учёта статических функций, которые у меня снизу написать не получается, их прототипы не видят их
А можно поподробнее? Я что-то ни разу не видел такого, что прототип не видит функцию. Можно маленький пример?
1
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
10.09.2010, 01:57
раньше не получалось, теперь нормально
раньше я юзал gcc, там не получалось сделать, в результате я стал всегда писать статические функции перед вызовами, но было это года два назад, а сейчас у меня gcc новый
C
1
2
3
4
5
6
7
8
9
10
11
12
static void f(void);
 
int main(void)
{
    f();
    return 0;
}
 
static void f(void)
{
    ;
}
Добавлено через 14 часов 43 минуты
во, вспомнил
C
1
2
3
4
5
6
7
8
9
10
11
12
int main(void)
{
    static void f(void);
 
    f();
    return 0;
}
 
static void f(void)
{
    ;
}
Code
1
2
3
4
5
6
7
8
[guest@localhost tmp]$ gcc t.c -o t
t.c: В функции ‘main’:
t.c:4: ошибка: для функции ‘f’ задан неверный класс хранения
t.c: На верхнем уровне:
t.c:10: предупреждение: несовместимые типы для ‘f’
t.c:10: ошибка: static-декларация ‘f’ после неstatic-декларации
t.c:6: замечание: здесь была предыдущая неявная декларация ‘f’
[guest@localhost tmp]$
0
 Аватар для Impuls1989
6 / 6 / 0
Регистрация: 08.09.2010
Сообщений: 35
10.09.2010, 11:37
Ну так весьма логично. Это ведь разные уровни видимости. Все, что реализовано в фигурных скобках не должно быть видно за их пределами...
0
Эксперт С++
 Аватар для fasked
5045 / 2624 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5
10.09.2010, 15:35
Цитата Сообщение от Impuls1989 Посмотреть сообщение
Ну так весьма логично. Это ведь разные уровни видимости. Все, что реализовано в фигурных скобках не должно быть видно за их пределами...
Ну в принципе да.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void foo() {
    void bar();
    bar();
}
 
int main()
{ 
    //bar(); // ошибка
    void bar();
    bar();
}
 
void bar() {
}
Со статическими функциями так делать действительно нельзя, это связано с их свойствами. Так как статический для функций означает "виден на уровне глобальных переменных"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.09.2010, 15:35
Помогаю со студенческими работами здесь

Sony Vegas: «Следующий файл не может быть найден в указанном местоположении: …»
Доброго времени суток. Проблема заключается в следующем. Каждый раз, когда я открываю любой ранее созданный проект, возникает сообщение...

Пользователь запретил получение данных о местоположении. ASP.NET Core MVC Google map api
В настройках андройд указано - запрашивать перед тем как запрещать, но при загрузке сайта сразу выдает это сообщение. На других телефонах...

Разница при вычислении производной функции
задана функция f(x)=5*x^2+9*x-10 производная этой функции df(x)/dx=5*2*x+9 рассмотрим функцию и ее производную на отрезке x= с...

Есть ли разница в расположении описания функции
Добрый день/утро. Скажите, пожалуйста, есть ли какая-то разница от написания функции в разных местах? Результат получается один и тот же....

Есть ли разница в каком порядке объвлены функции?
Есть файл Wnd.h class Wnd { public: void function(int min,int max); Wnd(); ~Wnd(); };


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru