Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

подключение отдельных файлов

52K
01 июля 2010 года
isaer
29 / / 21.06.2010
у меня такая проблема:
есть очень большой код и мне надо как то его сокротить и вот я придумал что можно создать отдельные файлы которые будут отвечать за все и тогда код уменьшится и понимать легче будет
и вот проблема:
у меня есть один файл в котором все обробатывается
и второй (не знаю какой делать cpp или h) и там для начала одна функция
и мне надо подключить этот второй файл к первому.
содержимое 2 файла:
float asd(int x, int y)
{
и вот тут у меня написано все разное (оно не важно) и там в одной строчке мне надо будет указать x и y
}
а потом как мне сделать что бы можно было писать в 1 файле что то вроде
asd(<число>,<число>);

я пытался сделать второй файл h и подключить к первому #include <"имя 2 файла"> но не работает.
2.1K
01 июля 2010 года
Norgat
452 / / 12.08.2009
вообще говоря нужно делать так:

делать пару name.h и name.cpp

в .h - объявления функций и классов(без реализации)
в .cpp - реализация функций и методов классов

чтобы добавить .h нужно сделать #include "path/name.h" - path/ - путь к name.h относительно каталога проекта.
.cpp компилятор сам подхватит(верно для Visual Studio, для gcc нужно прописывать в Makefile имена .cpp файлов)

пример:

test.h
 
Код:
int mult(int a, int b);


test.cpp
 
Код:
#include "test.h"
int mult(int a, int b)
{return a*b;}


main.cpp
 
Код:
#include "test.h"
...
void main()
{...}



п.с. реализация шаблонных функций и методов шаблонных классов должна быть в .h файле
52K
01 июля 2010 года
isaer
29 / / 21.06.2010
а где мне писать там допустим уровнение которое требует a и b в h файле или в cpp
2.1K
01 июля 2010 года
Norgat
452 / / 12.08.2009
Цитата: isaer
а где мне писать там допустим уровнение которое требует a и b в h файле или в cpp



беги гугл и читай про объявление функций в C++, вопросы отпадут.
если не помогло, то перечитывай мой пост и подпись.

52K
01 июля 2010 года
isaer
29 / / 21.06.2010
я бы искал в гугле если бы знал как это называется =))
я искал что то вроде "работа с 2 cpp файлами" =)) но ничего не нашел толклвого =)
52K
01 июля 2010 года
isaer
29 / / 21.06.2010
не чет она дурное ищет что то вроде объявления func а там нету того чего я хочу
52K
01 июля 2010 года
isaer
29 / / 21.06.2010
блин чет не получается у меня
мне там не надо ничего возврощать

вот что у меня в cpp
Код:
#include <glut.h>
#include "creat_object.h"

int sphere( int r, int x, int y, int z)
{
    glPushMatrix();
    glTranslated(x, y, z);
    glRotated(45, 1, 0, 0);
    glutWireSphere(r, 32, 32);
    glPopMatrix();
}

в h
 
Код:
int sphere( int r, int x, int y, int z);

ну и в главном я пишу что бы рисовало эту сферу
и никак не работает, в чем проблема??
87
02 июля 2010 года
Kogrom
2.7K / / 02.02.2008
Цитата: isaer

ну и в главном я пишу что бы рисовало эту сферу
и никак не работает, в чем проблема??


Возможно, ты невнимательно прочёл вот это:

Цитата: Norgat
.cpp компилятор сам подхватит(верно для Visual Studio, для gcc нужно прописывать в Makefile имена .cpp файлов)



То есть, файл .cpp надо ещё подключить к проекту. Но тут, чтобы дать совет, надо знать, какие инструменты используются (IDE, компилятор и т.п.).

52K
02 июля 2010 года
isaer
29 / / 21.06.2010
Visual Studio 2010
3
02 июля 2010 года
Green
4.8K / / 20.01.2000
isaer, я официально предупреждаю: если ты не потрудишься прочитать любую книгу по C++ и не перестанешь задавать глупые вопросы, а тем более в таком виде:
"и никак не работает, в чем проблема??",
я тебя отправлю в бан.

Это форум программистов, а не телепатов и репититоров.

P.S. русский для тебя не родной язык? следует и его поправить.
52K
02 июля 2010 года
isaer
29 / / 21.06.2010
Цитата: Green
P.S. русский для тебя не родной язык? следует и его поправить.



=)) а прикол в том что не родной =))

2.1K
02 июля 2010 года
Norgat
452 / / 12.08.2009
Цитата: isaer
=)) а прикол в том что не родной =))



сути это меняет. для общения на форумах лучше таки подучить русский.

по делу.

1) твой код работает до разделения на файлы?
2) если не работает - ошибки в студию.
3) работает - всё равно, ошибки в студию.

потому что без точной ругани компилятора помочь тебе проблематично, т.к. непонятно, где ты напортачил с разбиением кода.

52K
03 июля 2010 года
isaer
29 / / 21.06.2010
вот что пишет
1>c:\documents and settings\user\мои документы\visual studio 2010\projects\opengl\opengl\creat.cpp(11): error C4716: 'sphere' : must return a value

я так понял что тут функция не возврощает ничего и надо сделать что бы возврощала
но что мне возврощать?? там же нечего. как исправить??
297
03 июля 2010 года
koodeer
1.2K / / 02.05.2009
Цитата: isaer
но что мне возврощать?? там же нечего. как исправить??


Бгг... Вы же сами объявили свою функцию возвращающей значение:

 
Код:
int sphere( int r, int x, int y, int z);

Измените на
 
Код:
void sphere( int r, int x, int y, int z);
и будет вам счастье.
Естественно, в файле реализации int тоже нужно заменить на void.
2.1K
03 июля 2010 года
Norgat
452 / / 12.08.2009
добавлю от себя...
Цитата: isaer
вот что пишет
1>c:\documents and settings\user\мои документы\visual studio 2010\projects\opengl\opengl\creat.cpp(11): error C4716: 'sphere' : must return a value

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



вам таки стоит прочитать учебник по C++ прежде чем садиться программировать...

52K
03 июля 2010 года
isaer
29 / / 21.06.2010
отлично все работает =)
да все таки стоит купить книг =) ну я уже одну заказал
С/С++. Программирование на языке высокого уровня
может нормально.
я просто недавно начал программировать на C++, моделингом занимался (в максе).
62K
04 июля 2010 года
nikas
2 / / 04.07.2010
Цитата: Norgat
вообще говоря нужно делать так:

делать пару name.h и name.cpp

в .h - объявления функций и классов(без реализации)
в .cpp - реализация функций и методов классов


п.с. реализация шаблонных функций и методов шаблонных классов должна быть в .h файле



А функция обработки нажатия кнопки на форме - шаблонная?
У меня не получается вынести ее из файла .h в отдельный файл .cpp.

87
06 июля 2010 года
Kogrom
2.7K / / 02.02.2008
Цитата: nikas
А функция обработки нажатия кнопки на форме - шаблонная?
У меня не получается вынести ее из файла .h в отдельный файл .cpp.



Не помню, чтобы в литературе кто-то это отметил. Возможно, я забыл или пропустил.

Но, предполагаю, что тут будет проблема для компилятора - он не сможет сделать объектный файл, так как ему неизвестно на что заменять шаблон.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог