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

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

Войти
Регистрация
Восстановить пароль
 
Aaxenon
Light Knight
106 / 29 / 3
Регистрация: 03.06.2010
Сообщений: 361
#1

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

07.09.2010, 19:55. Просмотров 997. Ответов 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
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.09.2010, 19:55     разница в местоположении функции
Посмотрите здесь:

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

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

А какая разница между константным параметром и неконстантным в функции - C++
Здравствуйте! 1. Если использовать просто неконстантный параметр string, то ничего не изменится и программа будет работать? 2. Функция...

В чем разница между типом функции и типом возвращаемого значения? - C++
Читаю статью https:// code-live. ru/post/cpp-functions/ (ссылку изменил дабы не делать рекламу) Там написано - Любая функция...

Функции str.size() и str.length() - в чем их разница? - C++
Существует 2 функции для определения размера строки в string str.size() и str.length() В чем их разница? Почитал, что вроде бы разницы нет...

разница с и с++ - C++
с этого сема у нас в универе начинается с.одни говорят что с и с++ тоже самое другие что нет. хотел спросить много ли в них разницы?и если...

C++ и C. В чём разница? - C++
Всем доброго времени суток. Недавно разбирал сортировки в с++. Написал быструю и слияние. Вроде бы работает нормально. Спустя некоторое...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
radiohobbyt
192 / 190 / 4
Регистрация: 27.01.2009
Сообщений: 548
07.09.2010, 19:58     разница в местоположении функции #2
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
}
никакой. все для удобства.
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
07.09.2010, 22:42     разница в местоположении функции #3
Цитата Сообщение от RoY_Mu$T@nG Посмотреть сообщение
есть ли разница где писать, в начале или в конце кода?
например:
в вашем случае - без разницы, все-равно никакт работать не будет
Aaxenon
Light Knight
106 / 29 / 3
Регистрация: 03.06.2010
Сообщений: 361
08.09.2010, 18:09  [ТС]     разница в местоположении функции #4
Цитата Сообщение от RoY_Mu$T@nG Посмотреть сообщение
не уверен что так..
поправьте как правильно
rrrFer
Заблокирован
08.09.2010, 18:16     разница в местоположении функции #5
radiohobbyt,
C++
1
int a(a,b);//как так-то? :)
Impuls1989
6 / 6 / 0
Регистрация: 08.09.2010
Сообщений: 35
08.09.2010, 18:52     разница в местоположении функции #6
Исторически сложилось так, что сверху пишутся прототипы функций, а снизу их реализация. Не знаю как Вам, а мне приятнее видеть только названия функций сверху, и не мозолить себе глаза километрами бесполезного мне кода.
Объясню почему так сложилось.
Знаете ли Вы что делает #include <какой-нибудь хэдэр>? По сути когда вы нажмете на кнопку "скомпилировать" вместо инклуда подставятся все прототипы, которые в нем были записаны (что собственно и делает описание прототипа в варианте 2). С другой стороны, никто не запрещает Вам написать в хэдэре реализацию всей функции (вариант 1). Так что если делать все по уму, то наверное правильнее вариант № 2. Но опять таки повторюсь: все зависит от того, насколько вы хотите поиздеваться над человеком, который будет сопровождать Вашу программу.
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
09.09.2010, 04:15     разница в местоположении функции #7
на самом деле, когда прототипы уже есть, их не нужно делать потом (когда начинается перенос функций в другие файлы) и, в то же время, их можно сразу взять и перенести в соответствующий хедер

вот, а плюс написания функций сверху - это, когда файл открывается, то он сразу отматывается в конец и мы сразу видим main(), и не нужно мотать к ней; когда же функции внизу, то открывается последняя функция, то есть нужно мотать наверх, к main()
это без учёта статических функций, которые у меня снизу написать не получается, их прототипы не видят их
Impuls1989
6 / 6 / 0
Регистрация: 08.09.2010
Сообщений: 35
09.09.2010, 10:35     разница в местоположении функции #8
Цитата Сообщение от accept Посмотреть сообщение
это без учёта статических функций, которые у меня снизу написать не получается, их прототипы не видят их
А можно поподробнее? Я что-то ни разу не видел такого, что прототип не видит функцию. Можно маленький пример?
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
10.09.2010, 01:57     разница в местоположении функции #9
раньше не получалось, теперь нормально
раньше я юзал 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)
{
    ;
}
Код
[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]$
Impuls1989
6 / 6 / 0
Регистрация: 08.09.2010
Сообщений: 35
10.09.2010, 11:37     разница в местоположении функции #10
Ну так весьма логично. Это ведь разные уровни видимости. Все, что реализовано в фигурных скобках не должно быть видно за их пределами...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.09.2010, 15:35     разница в местоположении функции
Еще ссылки по теме:

Разница между if else и else if - C++
Привет, у меня возник &quot;нубский&quot; вопрос. Этот код, это же соркащенная версия нижнего? int i = 3; if (i == 1) ...

В чем разница? - C++
Скажите в чем разница между двумя кусками кода: std::string a; while ((std::cin&gt;&gt;a)!=&quot;Quit&quot;) { std::cout&lt;&lt;a; ...

Разница циклов for и while - C++
Перепишите следующий пример с инструкцией for в виде эквивалентного кода с использованием инструкции while:for (i=0;i&lt;max_length;i++) ...

в чем разница? - C++
вот такая вот конструкция (условие)?ложь:истина дает такой же результат if(условие){истина}else{ложь} хотелось бы...

Разница между != и <= - C++
Здравствуйте! Писал программу с использованием QuickSort и заинтересовала такая вещь: void quickSort(int arr, int left, int right) { ...


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

Или воспользуйтесь поиском по форуму:
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
10.09.2010, 15:35     разница в местоположении функции #11
Цитата Сообщение от 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() {
}
Со статическими функциями так делать действительно нельзя, это связано с их свойствами. Так как статический для функций означает "виден на уровне глобальных переменных"
Yandex
Объявления
10.09.2010, 15:35     разница в местоположении функции
Ответ Создать тему
Опции темы

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