Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Раздельная компиляция, :::::::::::::::::::::::::::::::: 
:(
    Опции темы
xach
  Дата 4.3.2005, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 22.10.2004
Где: СПб

Репутация: нет
Всего: нет



Привет Друзья!

Сдал курсовую по программированию в универе, учитель сказал
слегка переделать...
было:
Код

// tmp.h
class tmp
{
 //some functions
};

void tmp::tratra(void)
{
 //...
}

// and some other functions


Учитель требовал раздельной компиляции, сказал сделать
следующее:

Код

//tmp.h
class tmp
{
 //some functions
};


Код

//tmp.cpp
void tmp::tratra(void)
{
 //...
}

// and some other functions


Короче (много воды), как осуществить раздельную
компиляцию на примере заголовочного файла с классом

smile
PM MAIL   Вверх
azesmcar
Дата 4.3.2005, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Если я правильно понял тебе нужно

Заголовочный файл
Код

//test.h
#ifndef __TEST_H___
#define __TEST_H___
class Test
{
public:
  Test();
  virtual ~Test();
};
#endif

CPP файл
Код

//test.cpp
#include "test.h"

Test::Test()
{

}

Test::~Test()
{

}


Код

//main.cpp
#include "test.h"

int main()
{
  Test *pTest = new Test;
  delete pTest;
  return ( 0 );
}


На примере будет так, просто добавляешь CPP файл в свой проект...и где надо делаешь include "test.h" его функции уже будут видимы в любом файле и классе твоего проекта...главное не забудь добавить в проект..
PM   Вверх
DENNN
Дата 4.3.2005, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 1
Всего: 43



сам то понял, чего спросил?
PM ICQ   Вверх
sergejzr
Дата 4.3.2005, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 19
Всего: 360



xach на чём прогишь? Borland? MSVisual? GCC?


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
pablo
Дата 4.3.2005, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 12.2.2005
Где: Вильнюс, Литва

Репутация: 4
Всего: 6



Если юзаеш Вижуал Студио, то он при создании класса создаёт сам и заголовочный файл и файл описания класса.
Если сидиш под пингвином(g++), dev-cpp и прочими компиляторами,
то тебе надо создать заголовочный файл с директивами #ifndef (#if !defined) <название файла>,
#define <название файла>,<определение интерфейса класса> #endif.
При описании класса включи файл где у тебя находится интерфеис, и определи методы как обычно, вне класса.

Вот и всё.

Пример вышесказанного привёл azesmcar


--------------------
Первый блин всегда похож на сферу, иногда бывает и куб.
PM MAIL ICQ   Вверх
sergejzr
Дата 4.3.2005, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 19
Всего: 360



Не путайте человека! дефайны хорошо конечно, но во первых они не обязательны, а во вторых одними дефайнами не обойдёшься.

допустим у тебя два класса + main.

Делишь классы на 4 файлаю в итоге имеешь
1.h, 1.cpp, 2.h, 2.cpp, main.cpp

В g++ всё просто:
Цитата

g++ 1.cpp -o 1.o
g++ 2.cpp -o 1.o
g++ main.cpp 1.o 2.o -o prog.out
prog.out


В вижуале открываешь main.cpp, создаёшь проект.
В окошке с файлами правый клик->добавить файлы. Закидываешь 1.cpp, 2.cpp
Нажимешь на кнопку компиляции

В борланде
Project-> Add to Project
Закидываешь 1.cpp, 2.cpp
Нажимешь на кнопку компиляции


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
xach
Дата 5.3.2005, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 22.10.2004
Где: СПб

Репутация: нет
Всего: нет



Спасибо большое.
Долго я тупил...
А оказалось, что всё дело в путанице инклюдов,
т.е. два одинаковых инклюда в разных файлах + дефайн = неизвестно какой первым
подсатвится. (мне неизвестно)
В итоге всё чудесно скомпилилось.

smile smile smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0503 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.