Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
Незнайка
26 / 11 / 2
Регистрация: 14.10.2016
Сообщений: 373
Записей в блоге: 2
1

Как правильно записать функцию в отдельном файле?

09.04.2017, 20:42. Показов 2819. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравия желаю.

Помогите, пожалуйста, разобраться, как записать собственную функцию в отдельном файле?

Делаю так, не получается:

main.cpp:
C++
1
2
3
4
5
#include "main.h"
 
int main(*) {
        KillSaraKonor(human, woman, 90, 60, 90);
}
main.h:
C++
1
2
3
4
5
6
#include <terminate>
#include <ещё_с_десяток_библиотек_для_функций_из_main.cpp>
 
extern int sk_height = 190; // Объявляю [B]глобальную [/B]переменную
 
KillSaraKonor(type t, gender g, param1 p1, param2 p2, param3 p3); // Объявляю функцию
fy_funct.cpp:
C++
1
2
3
4
5
6
7
8
9
10
11
// Сама функция
 
KillSaraKonor(type t, gender g, param1 p1, param2 p2, param3 p3) {
        for (i = 1, i < 8000000000, i++) {
               ThisHuman = SearchHumans();
               if (ThisHuman.type = t && ThisHuman.gender = g && ThisHuman.param1 = p1 &&
                               ThisHuman.param2 = p2 &&  ThisHuman.param3 = p3) {
                if (ThisHuman.height = sk_height)  { KillHuman(ThisHuman); }
                }
        }
}
Но Васька выдаёт ошибку. Говорит, что переменная sk_height, которую я объявил как extern, а значит, должна быть видна моему второму .cpp файлу, не найдена.

Почему? Что не так? И как правильно объявить глобальную переменную?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.04.2017, 20:42
Ответы с готовыми решениями:

Как правильно компилировать .ехе файл, чтобы ресурсы были в отдельном файле?
Visual Basic 2010 Как правильно компилировать .ехе файл, чтобы ресурсы были в отдельном файле, и он...

Как передать введенное пользователем число в функцию в отдельном файле js
Доброго времени суток) Необходимо вычислить факториал числа на js создаем 2 файла: html страничку...

Как правильно записать опоздание функции через функцию-ножницы, если t!=0 при t>4? Как правую часть записать?
Нужно найти изображение оригинала. Всю суть проблемы написал в заголовке.

Передача параметров из html в функцию js в отдельном файле
Всем привет. Появился вопрос, обыскал весь интернет, видел некоторые решения, но до конца не понял...

10
63 / 63 / 39
Регистрация: 18.11.2016
Сообщений: 562
09.04.2017, 20:43 2
Смысле в отдельном? В заголовочном файле имеете ввиду?
1
Незнайка
26 / 11 / 2
Регистрация: 14.10.2016
Сообщений: 373
Записей в блоге: 2
09.04.2017, 20:44  [ТС] 3
Photofenix, нет, в отдельном .cpp файле. Функции в хедерах выглядят не очень.
0
63 / 63 / 39
Регистрация: 18.11.2016
Сообщений: 562
09.04.2017, 20:47 4
В текстовом файле на рабочем столе например?
1
Незнайка
26 / 11 / 2
Регистрация: 14.10.2016
Сообщений: 373
Записей в блоге: 2
09.04.2017, 20:52  [ТС] 5
Photofenix, Вы не поняли. Я записываю в .срр файл функцию, которая зависит от переменных, используемых так же и в функции main. Поэтому я объявляю их как extern переменные. Но созданный мною .срр файл всё равно не находит эту глобальную переменную, вот в чём проблема.

Как это исправить?

Добавлено через 1 минуту
Photofenix, вы же меня поняли?
0
63 / 63 / 39
Регистрация: 18.11.2016
Сообщений: 562
09.04.2017, 21:02 6
Очень смутно понял.
Вам нужно сделать глобальную функцию?
1
7795 / 6561 / 2985
Регистрация: 14.04.2014
Сообщений: 28,683
09.04.2017, 21:07 7
Лучший ответ Сообщение было отмечено mkostoevr как решение

Решение

Переменную нужно объявлять в cpp, а не в h. В одном cpp просто как глобальную, а во всех прочих cpp, где нужен доступ, как extern.
1
Незнайка
26 / 11 / 2
Регистрация: 14.10.2016
Сообщений: 373
Записей в блоге: 2
09.04.2017, 21:10  [ТС] 8
Photofenix, приведу пример:

Есть проект из одного файла.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
 
int a = 1;
 
void my_funct();
 
int main() {
        fy_funct();
}
 
my_funct() {
        a += 1;
}
Я хочу вывести функцию my_funct в отдельный файл, чтобы не захламлять главный файл.
НО! переменная а нужна и функции my_funct и main в главном файле.
0
7795 / 6561 / 2985
Регистрация: 14.04.2014
Сообщений: 28,683
09.04.2017, 21:11 9
Лучший ответ Сообщение было отмечено mkostoevr как решение

Решение

Либо передавай её в функцию как параметр - самый простой способ, либо делай как я написал.
1
Незнайка
26 / 11 / 2
Регистрация: 14.10.2016
Сообщений: 373
Записей в блоге: 2
09.04.2017, 21:15  [ТС] 10
nmcf, точно! Теперь понял. Спасибо!
0
63 / 63 / 39
Регистрация: 18.11.2016
Сообщений: 562
09.04.2017, 21:16 11
Лучший ответ Сообщение было отмечено mkostoevr как решение

Решение

Если работаете в VS, то там есть вкладка "Заголовочные файлы" и создайте там собственную библиотеку нужных вам функций.
А в cpp файле просто подключите свою библиотеку и будете вызывать необходимые вам функции.
1
09.04.2017, 21:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.04.2017, 21:16
Помогаю со студенческими работами здесь

Как правильно записать функцию?
Ребята помогите пожалуйста учу С++, хочу разобраться с разбиением задачи на функции. Задача 2ух...

Как правильно записать функцию?
Подскажите, пожалста, можно ли так делать: #include &lt;math.h&gt; double F1(double x,double y) { ...

Как правильно записать функцию
День добрый. Я человек новый в матлабе. Возникла такая проблема, хочу записать уравнение, которое...

Как правильно записать функцию?
Помогите написать функцию в Паскале. (abs(3.7-j)-2)*(i+j)^5*Lg(abs(j-i))-(abs(5.3-e^2j))*(-2)^j)...


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

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