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

Деление кода на .h .cpp - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.94
!Андрей!
6 / 6 / 0
Регистрация: 31.01.2012
Сообщений: 134
30.07.2012, 07:45     Деление кода на .h .cpp #1
Подскажите пожалуйста как правильно поделить код! Обязательно чтобы были заголовочные файлы и файлы .cpp

main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
# include <iostream>
using namespace std;
# include <conio.h>
# include "queue.h"
 
int main(void)
{
    show(5);
    
    getch();
    return 0;
}
queue.cpp
C++
1
2
3
4
5
6
7
8
9
# include <iostream>
using namespace std;
 
void show(int n)
{
     cout<<n;     
}
 
# include "queue.h"
queue.h
C++
1
void show(int);
Выдаёт ошибку:

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

Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.07.2012, 07:45     Деление кода на .h .cpp
Посмотрите здесь:

C++ перевод кода, деление нацело
C++ Не могу исправить ошибку :113 H:\Dev-Cpp\Проекты\уроки\Безымянный3.cpp cannot convert `IDirectDraw7**' to `IDirectDraw**' for argument `2' to `HRESULT DirectDrawCreate(GUID*, IDirectDraw**, IUnknown*)
C:\tsserver\Projects\cpp\codeblocks\MyComp\compiler\mmz\mmz. cpp|29|error: no match for 'operator=' in '* Item = * Source'| C++
C:\tsserver\Projects\cpp\codeblocks\MyComp\IDE\IDE\IDE.cpp|1 5|error: 'InitApplication' was not declared in this scope| C++
C++ C:\tsserver\Projects\cpp\codeblocks\MyComp\IDE\IDE\IDE.cpp|3 9|undefined reference to `GetStockObject@4'|
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,390
30.07.2012, 08:16     Деление кода на .h .cpp #2
main.cpp:
C++
1
2
3
4
5
6
7
8
9
# include <iostream>
# include "queue.h"
 
int main(void)
{
    show(5);
 
    return 0;
}
queue.h:
C++
1
2
3
4
5
6
#ifndef QUEUE_H
#define QUEUE_H
 
void show(int);
 
#endif
queue.cpp:
C++
1
2
3
4
5
6
7
8
# include <iostream>
#include "queue.h"
using namespace std;
 
void show(int n)
{
     cout<<n;     
}
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,390
30.07.2012, 08:17     Деление кода на .h .cpp #3
В качестве альтернативы Include Guard для заголовочных файлов можно использовать pragma once, но такой способ поддерживается не всеми компиляторами
!Андрей!
6 / 6 / 0
Регистрация: 31.01.2012
Сообщений: 134
30.07.2012, 08:19  [ТС]     Деление кода на .h .cpp #4
Сделал как написали, пишет такую же ошибку:

In function `main':
[Linker error] undefined reference to `show(int)'
ld returned 1 exit status
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,390
30.07.2012, 08:24     Деление кода на .h .cpp #5
!Андрей!, значит, файл queue.cpp не линкуется. Почему это происходит, зависит от того, какой у тебя компилятор и используешь/не используешь ли ты IDE.
!Андрей!
6 / 6 / 0
Регистрация: 31.01.2012
Сообщений: 134
30.07.2012, 08:26  [ТС]     Деление кода на .h .cpp #6
Использую Dev-C++

Что такое IDE не имею понятия))
а как-нибудь это можно поправить чтобы можно было работать спокойно дальше? Ну и чтобы компилилось всё на других компах
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,390
30.07.2012, 08:29     Деление кода на .h .cpp #7
Цитата Сообщение от !Андрей! Посмотреть сообщение
Использую Dev-C++
Что такое IDE не имею понятия))
Это и есть IDE. Насколько я знаю, в качестве компилятора там по умолчанию идет MinGW g++ (да и по ошибкам похоже). Судя по всему, файл queue.cpp просто не был добавлен в проект, т.к. среда не передает его линкеру.

Попробуй из консоли выполнить в директории проекта:

Код
g++ -o out.exe main.cpp queue.cpp
Естественно, g++ должен быть в PATH
!Андрей!
6 / 6 / 0
Регистрация: 31.01.2012
Сообщений: 134
30.07.2012, 08:34  [ТС]     Деление кода на .h .cpp #8
Блин, если честно - не очень понял что нужно сделать) Сначала попробовал в командную строку забить
g++ -o out.exe main.cpp queue.cpp
- он мне написал:
g++ не является внутренней командой...

ну и на всякий случай bat файл создал - тоже самое пишет, ну бат - в директории конечно находится)
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,390
30.07.2012, 08:39     Деление кода на .h .cpp #9
Цитата Сообщение от !Андрей! Посмотреть сообщение
g++ не является внутренней командой...
это потому, что

Цитата Сообщение от Nameless One Посмотреть сообщение
g++ должен быть в PATH
Ну ладно, оставим пока увлекательные приключения типа поиска исполняемых файлов MinGW и редактирование переменных окружения в Windows. Попробуй создать проект заново и убедись, что файл queue.cpp добавлен к проекту
!Андрей!
6 / 6 / 0
Регистрация: 31.01.2012
Сообщений: 134
30.07.2012, 08:40  [ТС]     Деление кода на .h .cpp #10
Вот что Visual Studio пишет:

1>------ Построение начато: проект: fileeeeees, Конфигурация: Debug Win32 ------
1>Построение начато 30.07.2012 8:39:23.
1>PrepareForBuild:
1> Создание каталога "D:\Projects\fileeeeees\Debug\".
1>InitializeBuildStatus:
1> Создание "Debug\fileeeeees.unsuccessfulbuild", так как было задано "AlwaysCreate".
1>ClCompile:
1> stdafx.cpp
1> queue.cpp
1>d:\projects\fileeeeees\fileeeeees\queue.cpp(2): warning C4627: #include "queue.h": пропущен при поиске использования предкомпилированного заголовка
1> Добавление директивы в "StdAfx.h" или перестройка предкомпилированного заголовка
1>d:\projects\fileeeeees\fileeeeees\queue.cpp(9): fatal error C1010: непредвиденный конец файла во время поиска предкомпилированного заголовка. Возможно, вы забыли добавить директиву "#include "StdAfx.h"" в источник.
1> fileeeeees.cpp
1> Создание кода...
1>
1>СБОЙ построения.
1>
1>Затраченное время: 00:00:02.14
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
30.07.2012, 08:43     Деление кода на .h .cpp #11
Попробовал в Dev-C++. Всё компилируется.
Миниатюры
Деление кода на .h .cpp  
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,390
30.07.2012, 08:44     Деление кода на .h .cpp #12
Цитата Сообщение от !Андрей! Посмотреть сообщение
fatal error C1010: непредвиденный конец файла во время поиска предкомпилированного заголовка. Возможно, вы забыли добавить директиву "#include "StdAfx.h"" в источник.
Это уже заморочки студии. Либо добавь строчку #include "StdAfx.h" в начало файла main.cpp, либо создавай действительно пустой проект.

Не по теме:

Учись читать сообщения компилятора, они не просто так выводятся

alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
30.07.2012, 08:45     Деление кода на .h .cpp #13
!Андрей!, вы какой проект создаёте?
!Андрей!
6 / 6 / 0
Регистрация: 31.01.2012
Сообщений: 134
30.07.2012, 08:46  [ТС]     Деление кода на .h .cpp #14
Цитата Сообщение от Nameless One Посмотреть сообщение
Попробуй создать проект заново и убедись, что файл queue.cpp добавлен к проекту
Вооооот, вроде всё так делаю, всё в одной папке находится и т.п.
код внутри - точно такой как скинули:
Миниатюры
Деление кода на .h .cpp  
!Андрей!
6 / 6 / 0
Регистрация: 31.01.2012
Сообщений: 134
30.07.2012, 08:47  [ТС]     Деление кода на .h .cpp #15
Цитата Сообщение от alsav22 Посмотреть сообщение
!Андрей!, вы какой проект создаёте?
Консольное приложение Win32
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,390
30.07.2012, 08:48     Деление кода на .h .cpp #16
!Андрей!, ну вон у товарища выше все успешно компилируется
xADMIRALx
 Аватар для xADMIRALx
66 / 60 / 1
Регистрация: 09.06.2012
Сообщений: 291
30.07.2012, 08:51     Деление кода на .h .cpp #17
!Андрей!, Вы в проект должны добавить и в папку,Мне кажется на 99% что вы в проект не добавили queue
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
30.07.2012, 08:52     Деление кода на .h .cpp #18
Цитата Сообщение от !Андрей! Посмотреть сообщение
Консольное приложение Win32
При создании в Студии, после ввода имени проекта, далее, и там снимите галочку - использовать предкомпилированные заголовки.
!Андрей!
6 / 6 / 0
Регистрация: 31.01.2012
Сообщений: 134
30.07.2012, 08:53  [ТС]     Деление кода на .h .cpp #19
В Visual Studio - Заработало когда я добавил строку #include "stdafx.h" в файл queue.cpp

А вот с Dev-C++ - не разобрался
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.07.2012, 08:54     Деление кода на .h .cpp
Еще ссылки по теме:

С помощью командной строки >namberstr f1.cpp Определить число строк в файле с именем f1.cpp C++
Использовать void из 1.cpp в 2.cpp C++
Main.cpp In file included from main.cpp C++

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
30.07.2012, 08:54     Деление кода на .h .cpp #20
Цитата Сообщение от xADMIRALx Посмотреть сообщение
!Андрей!, Вы в проект должны добавить и в папку,Мне кажется на 99% что вы в проект не добавили queue
На скрине он у него есть.
Yandex
Объявления
30.07.2012, 08:54     Деление кода на .h .cpp
Ответ Создать тему
Опции темы

Текущее время: 23:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru