Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.07.2012, 07:46   #1
Андрей!
Пользователь
 
Регистрация: 04.11.2011
Сообщений: 45
Восклицание Деление кода на .h .cpp

Подскажите пожалуйста как правильно поделить код! Обязательно чтобы были заголовочные файлы и файлы .cpp

main.cpp
[CPP]# include <iostream>
using namespace std;
# include <conio.h>
# include "queue.h"

int main(void)
{
show(5);

getch();
return 0;
}
[/CPP]

queue.cpp
[CPP]
# include <iostream>
using namespace std;

void show(int n)
{
cout<<n;
}

# include "queue.h"
[/CPP]

queue.h
[CPP]void show(int);
[/CPP]

Выдаёт ошибку:

In function `main':
[Linker error] undefined reference to `show(int)'
ld returned 1 exit status

Андрей! вне форума Ответить с цитированием
Старый 30.07.2012, 08:15   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
#include "queue.h"
#include <iostream>
 using namespace std;

 void show(int n)
 {
 cout<<n; 
 }
более правильно cpp выглядит так.

вы чем компилите?
у вас оба cpp должны компилиться и оба линковаться.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 30.07.2012, 08:21   #3
Андрей!
Пользователь
 
Регистрация: 04.11.2011
Сообщений: 45
По умолчанию

Работаю в Dev-C++

Просто вроде всё правильно, хотел потренироваться попрогать, а на таком запоролся[CPP]# include <iostream>
# include "queue.h"

int main(void)
{
show(5);

return 0;
}[/CPP]

queue.h:
[CPP]#ifndef QUEUE_H
#define QUEUE_H

void show(int);

#endif[/CPP]

queue.cpp:
[CPP]# include <iostream>
#include "queue.h"
using namespace std;

void show(int n)
{
cout<<n;
}[/CPP][/QUOTE]

Не работает тоже почему-то

пишет:

In function `main':
[Linker error] undefined reference to `show(int)'
ld returned 1 exit status
Андрей! вне форума Ответить с цитированием
Старый 30.07.2012, 08:23   #4
Андрей!
Пользователь
 
Регистрация: 04.11.2011
Сообщений: 45
По умолчанию

http://dvo.sut.ru/libr/cvti/i618buz/15.htm - Сделал как в статье - не пашет, мб что-то у меня с компилятором не так?
Андрей! вне форума Ответить с цитированием
Старый 30.07.2012, 09:55   #5
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

[Linker error] undefined reference to `show(int)'

Отсутствует туловище функции. Прототип объявлен, а туловища нету.

Похоже, что твой богомерзкий Dev, не слинковал файл queue.cpp с проектом.

В студии это делается элементарно - добавляется cpp файл в солюшен проекта, и он уже автоматически и компилируется, и линкуется.

С Dev особо не работал, возможно там аналогично нужно делать.

Не достаточно просто создать файл cpp, нужно ещё указать компилятору, что файл должен войти в компиляцию и линковку.
_Bers вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
CUDA в *.cpp devozh Visual C++ 1 07.04.2012 14:54
Исправить ошибку CPP VKorablev Помощь студентам 0 20.12.2011 21:42
*.cpp и *.h mrandrey Общие вопросы C/C++ 7 24.08.2009 16:14
Компилим CPP SunKnight Общие вопросы C/C++ 2 22.01.2008 18:16