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

C++

Войти
Регистрация
Восстановить пароль
 
shynarG
0 / 0 / 0
Регистрация: 18.05.2012
Сообщений: 8
#1

Почему для объявления функций порядок не имеет значения? - C++

01.09.2015, 08:33. Просмотров 321. Ответов 4
Метки нет (Все метки)

Добрый день! Вот никак не могу понять почему порядок объявлений функций не строгий, а если функции описывать до ф-и main(), то там последовательность описания функции строгая?

С объявлением функций, имеет такой вид:
Код
#include <iostream>
#include <iomanip>
using namespace std; 

void func1();
void func2();


int main()

{   
	func1();
}

void func1()
{
	cout << "Function #1";
	func2();
}

void func2()
{
 	cout << " Function #2";
}

а если так, не распознает func2 (ну это является логичным, потому что он еще не описан):

Код
#include <iostream>
#include <iomanip>
using namespace std; 

void func1()
{
	cout << "Function #1";
	func2();
}

void func2()
{
 	cout << " Function #2";
}


int main()

{ 
	func1();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.09.2015, 08:33     Почему для объявления функций порядок не имеет значения?
Посмотрите здесь:

Порядок объявления функций - C++
народ, я хочу чтобы в моём файле .cpp, после инклюдов в алфавитном порядке и до main(), шли различные функции в алфавитном порядке.. но при...

Порядок объявления библиотек? - C++
Начал изучать С++ и столкнулся с такой проблемой: в книгах пишут, что при использовании класса string его надо явно объявлять, но у меня...

Синтакасис объявления функций - C++
... double func(double x, double a); int main(int argc, char *argv) ... double func - вещественный тип данных, если не ошибаюсь....

Все виды(способы) объявления переменных, функций, классов, типов и т.п. на С++ - C++
Пишу обфускатор кода, написанного на С++ и появилась необходимость знания всевозможных способов объявления чего-либо на С++. Так как...

Реализация отношения классов типа двунаправленная ассоциация, UML, порядок объявления классов, неполный класс - C++
Доброго времени суток! Осваивая UML, решил реализовать отношение двунаправленной ассоциации по диаграмме: У одного владельца...

Почему в setnamedisc нужно использовать char * для установки значения, а при возвращении значения тип метода должен быть char* ? - C++
Вопрос такой, почему в методе setnamedisc нужно использовать char *s для установки значения, а при возвращении значения в методе...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DrOffset
7058 / 4199 / 949
Регистрация: 30.01.2014
Сообщений: 6,965
01.09.2015, 09:00     Почему для объявления функций порядок не имеет значения? #2
Цитата Сообщение от shynarG Посмотреть сообщение
ну это является логичным, потому что он еще не описан
Разве это не ответ на твой вопрос?
Чтобы что-то использовать, компилятору нужно видеть объявление.
В первом варианте объявление f2() видно из f1(), а во втором - нет.

Добавлено через 1 минуту
Уточню, что объявления достаточно, чтобы совершить связывание (есть имя, значит можно вызывать). Фактическое местоположение тела функции при этом уже не играет роли. Потому что поиск его и связывание с именем - это уже забота линкера, а не компилятора.
shynarG
0 / 0 / 0
Регистрация: 18.05.2012
Сообщений: 8
01.09.2015, 09:17  [ТС]     Почему для объявления функций порядок не имеет значения? #3
я не могу понять почему для объявлений функций порядок не имеет значение. И как понять объявление f2() видно из f1() из кода

Код
void func1();
void func2();
Kerry_Jr
Модератор
Эксперт PHP
2178 / 1974 / 689
Регистрация: 14.05.2014
Сообщений: 5,773
Записей в блоге: 1
Завершенные тесты: 5
01.09.2015, 09:31     Почему для объявления функций порядок не имеет значения? #4
Цитата Сообщение от shynarG Посмотреть сообщение
я не могу понять почему для объявлений функций порядок не имеет значение.
потому что это всего лишь объявление, т.е. указание компилятору, что такая-то функция имеет такой-то тип возвращаемого значения и столько-то параметров с такими-то типами.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.09.2015, 11:15     Почему для объявления функций порядок не имеет значения?
Еще ссылки по теме:

Почему у меня для использования функций cstring не нужно включать прототип библиотеки - C++
Я недавно начал осваивать с++ с помощью учебника и там по ходу главы создается тренировочный класс String для работы со строками и в нем...

есть указатель на конец файла и он самоинициализируется, но не в месте объявления, а когда учавствует в условии. Почему так? - C++
Сабж, мистика какая-то. Вот я так работаю #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;iterator&gt; using namespace std; ...

Где выделяется память для возвращаемого значения функций? - C++
Собственно возник вопрос, корректен ли такой код: есть некая функция, которая возвращает объект класса MyClass: MyClass someFunction();...

Порядок работы функций - C++
Всем доброго времени суток! Написал архиватор, но проблема в том, что он работает только в случае если сначала выполнить фун-цию zip();,...


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

Или воспользуйтесь поиском по форуму:
DrOffset
7058 / 4199 / 949
Регистрация: 30.01.2014
Сообщений: 6,965
01.09.2015, 11:15     Почему для объявления функций порядок не имеет значения? #5
Цитата Сообщение от shynarG Посмотреть сообщение
И как понять объявление f2() видно из f1() из кода
Понять просто: если до момента определения тела функции у тебя уже было выше объявление, то все будет работать.
Если объявления не было, то работать не будет.
На момент использования должно быть видно (расположено выше по тексту) объявление.
Yandex
Объявления
01.09.2015, 11:15     Почему для объявления функций порядок не имеет значения?
Ответ Создать тему
Опции темы

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