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

C++

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

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

01.09.2015, 08:33. Просмотров 325. Ответов 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++):

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

Порядок выполнения функций - C++ Builder
Приветствую. Имеется условие, которое зависит от результата выполнения функции и возвращаемого ею значения. Вопрос: в нижеприведенном коде...

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
DrOffset
7138 / 4279 / 964
Регистрация: 30.01.2014
Сообщений: 7,067
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
2191 / 1987 / 694
Регистрация: 14.05.2014
Сообщений: 5,812
Записей в блоге: 1
Завершенные тесты: 5
01.09.2015, 09:31 #4
Цитата Сообщение от shynarG Посмотреть сообщение
я не могу понять почему для объявлений функций порядок не имеет значение.
потому что это всего лишь объявление, т.е. указание компилятору, что такая-то функция имеет такой-то тип возвращаемого значения и столько-то параметров с такими-то типами.
0
DrOffset
7138 / 4279 / 964
Регистрация: 30.01.2014
Сообщений: 7,067
01.09.2015, 11:15 #5
Цитата Сообщение от shynarG Посмотреть сообщение
И как понять объявление f2() видно из f1() из кода
Понять просто: если до момента определения тела функции у тебя уже было выше объявление, то все будет работать.
Если объявления не было, то работать не будет.
На момент использования должно быть видно (расположено выше по тексту) объявление.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.09.2015, 11:15
Привет! Вот еще темы с ответами:

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

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

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

Порядок объявления курсоров и хэндлеров - MySQL
Написал хранимую процедуру. При её написании MySQL Workbench ничего красным не подчеркивает. При попытке создать таковую хранимую процедуру...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
01.09.2015, 11:15
Ответ Создать тему
Опции темы

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