90 / 84 / 42
Регистрация: 27.09.2015
Сообщений: 316
1

Порядок объявления функций

22.04.2016, 12:20. Показов 4155. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
народ, я хочу чтобы в моём файле .cpp, после инклюдов в алфавитном порядке и до main(), шли различные функции в алфавитном порядке.. но при таком подходе возникают проблемы незадикларированных функций - как этого избежать?
И почему так происходит? Ведь входная точка - это main().. и значит должно быть абсолютно не важно в каком порядке идёт список функций, переменных до него..
Суть вопроса(little_cout was not declared in this scope.. line 13):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/*
 * test001.cpp
 *
 *  Created on: Apr 22, 2016
 *      Author: mir16
 */
 
 
#include <iostream>
 
 
void big_func(){
    little_cout();
}
void little_cout(){
    std::cout << "Hi\n";
}
 
int main(){
    big_func();
    return 0;
}
Eclipse IDE for C/C++ Developers

Version: Mars.1 Release (4.5.1)
Build id: 20150924-1200
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.04.2016, 12:20
Ответы с готовыми решениями:

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

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

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

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

3
11 / 11 / 13
Регистрация: 23.05.2015
Сообщений: 50
22.04.2016, 12:41 2
Лучший ответ Сообщение было отмечено mir16 как решение

Решение

mir16, объявите заголовок функций вверху.В вашем примере вы используете функцию раньше ее создания.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
void little_cout();
 
void big_func() {
    little_cout();
}
void little_cout() {
    std::cout << "Hi\n";
}
 
int main() {
    big_func();
    return 0;
}
1
90 / 84 / 42
Регистрация: 27.09.2015
Сообщений: 316
22.04.2016, 13:48  [ТС] 3
это решает задачу, хотя всё-же странно..
аналитик кода, в иде, не даёт мне скомпилировать код т.к. видит какую-то траблу - в виде несуществующей функции.. но ведь в момент компиляции функция little_cout() получит свой адрес и тогда её сможет вызвать big_func()..
т.е. адреса ведь задаются на этапе компиляции? - значит в момент исполнения main() у little_cout() будет адрес и соответственно big_func() должен уметь её вызвать.. - где ошибка? в аналитике? или всё-же я что-то теряю?

Добавлено через 11 минут
мы поняли.
я просто нуб.. спасибо
компилятор не знает куда перенаправлять в 13-ой строке, потому-что в 13-ой нет адреса, а есть билиберда.
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
22.04.2016, 16:49 4
Цитата Сообщение от Son1Q Посмотреть сообщение
.В вашем примере вы используете функцию раньше ее создания.
Не создания, а объявления. Компилятору надо всего лишь сказать (путем предварительной декларации), что это функция и она будет определена где-то в другом месте. Например, далее в этом файле или вовсе в другом модуле.
1
22.04.2016, 16:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.04.2016, 16:49
Помогаю со студенческими работами здесь

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

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

Порядок работы функций
Всем доброго времени суток! Написал архиватор, но проблема в том, что он работает только в случае...

Порядок выполнения функций
Добрый день. Подскажите пожалуйста, почему сначала выдается сообщение с нижнего блока (cout &lt;&lt;...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru