Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++
Войти
Регистрация
Восстановить пароль
 
shynarG
0 / 0 / 0
Регистрация: 18.05.2012
Сообщений: 8
#1

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

01.09.2015, 08:33. Просмотров 394. Ответов 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();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.09.2015, 08:33
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Почему для объявления функций порядок не имеет значения? (C++):

Где выделяется память для возвращаемого значения функций?
Собственно возник вопрос, корректен ли такой код: есть некая функция, которая...

Порядок выполнения функций
Приветствую. Имеется условие, которое зависит от результата выполнения функции...

Порядок объявления функций
народ, я хочу чтобы в моём файле .cpp, после инклюдов в алфавитном порядке и до...

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

Синтакасис объявления функций
... double func(double x, double a); int main(int argc, char *argv) ......

Странные объявления функций в заголовочных файлах
Пытаюсь потихоньку разобраться в C++. Когда читаешь теорию, почти все понятно,...

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

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

Код
void func1();
void func2();
0
Kerry_Jr
Эксперт PHP
2210 / 2006 / 940
Регистрация: 14.05.2014
Сообщений: 5,869
Записей в блоге: 1
Завершенные тесты: 5
01.09.2015, 09:31 #4
Цитата Сообщение от shynarG Посмотреть сообщение
я не могу понять почему для объявлений функций порядок не имеет значение.
потому что это всего лишь объявление, т.е. указание компилятору, что такая-то функция имеет такой-то тип возвращаемого значения и столько-то параметров с такими-то типами.
0
DrOffset
7518 / 4514 / 1097
Регистрация: 30.01.2014
Сообщений: 7,362
01.09.2015, 11:15 #5
Цитата Сообщение от shynarG Посмотреть сообщение
И как понять объявление f2() видно из f1() из кода
Понять просто: если до момента определения тела функции у тебя уже было выше объявление, то все будет работать.
Если объявления не было, то работать не будет.
На момент использования должно быть видно (расположено выше по тексту) объявление.
0
01.09.2015, 11:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.09.2015, 11:15
Привет! Вот еще темы с решениями:

Объявления функций До/После main(), файлы (*.cpp, *.h)
Всем привет! В некоторых источниках пишут, что объявление функций после main()...

Почему значения enum выводятся в порядке отличном от объявления?
Обьясните пожайлуста почему код соритруется по порядку это из за foreach или из...

порядок группы равен 4 и в ней только 1 элемент имеет порядок 4. какой порядок имеют остальные элементы? сколько в ней подгрупп?
Совсем не чего не понятно

Порядок объявления переменных
Прошу помощи/совета. Есть код: #ymstude &quot;stm32f4xx.h&quot; #ymstude...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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