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

Перенос в другую единицу трансляции - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.94
SatOleg
0 / 0 / 0
Регистрация: 05.08.2011
Сообщений: 30
10.08.2011, 10:36     Перенос в другую единицу трансляции #1
Доброго дня!

имею main файл содержащий

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
...
#include "Worker.hh"
 
bool prepared = false;
 
void prepare_one()
{
    prepared = true;
    Worker::Part1 = 0x11;
}
 
void hard_work()
{
     GoodWork = 0x77;
     prepare_one();
}
...
компилируется и выполняется без проблем.

Необходимо выделить вспомогательную функцию в отдельную единицу трансляции


делаю так
one.hh
C++
1
2
 void prepare_one();
bool prepared;
one.cc
C++
1
2
3
4
5
6
7
8
9
10
#include "one.hh"
#include "Worker.hh"
 
prepared = false;
 
void prepare_one()
{
    prepared = true;
    Worker::Part1 = 0x11;
}
main.cc
C++
1
2
3
4
5
6
7
8
#include "one.hh" ;
...
void hard_work()
{
     GoodWork = 0x77;
     prepare_one();
}
...
и искренне надеюсь что это заработает но получаю ошибку линковки

[Linker error] undefined reference to `prepare_one()'

был бы рад услышать что-либо в помощь. Спс.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SatOleg
0 / 0 / 0
Регистрация: 05.08.2011
Сообщений: 30
10.08.2011, 13:37  [ТС]     Перенос в другую единицу трансляции #21
Цитата Сообщение от lazybiz Посмотреть сообщение
Эта штука должна быть в .cc файле.
то есть должно быть в one.cc или two.cc ? а попытка иницилизировать в worker.cc не увенчалась успехом =(
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
10.08.2011, 13:41     Перенос в другую единицу трансляции #22
Цитата Сообщение от SatOleg Посмотреть сообщение
то есть должно быть в one.cc или two.cc ? а попытка иницилизировать в worker.cc не увенчалась успехом =(
Это странно. Если worker.cc подключён к проекту, то должно было сработать.
Ошибка какая?
DoZZer_
11 / 11 / 1
Регистрация: 09.08.2011
Сообщений: 53
10.08.2011, 13:50     Перенос в другую единицу трансляции #23
SatOleg,
на будущее, вводи через директиву #if сравнение на включенность этого инклудовского файла, если уже подключен, то во второй раз он инициализироваться не будет, т.к. неоднократная инициализация может встречаться нередко.
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
10.08.2011, 13:54     Перенос в другую единицу трансляции #24
Цитата Сообщение от DoZZer_ Посмотреть сообщение
на будущее, вводи через директиву #if сравнение на включенность этого инклудовского файла, если уже подключен, то во второй раз он инициализироваться не будет, т.к. неоднократная инициализация может встречаться нередко.
include guard, безусловно, полезная и нужная вещь, но от повторного определения переменных и функций, размещённого в заголовке, это не поможет.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.08.2011, 14:24     Перенос в другую единицу трансляции
Еще ссылки по теме:

Как вывести мнимую единицу? C++
Перенос динамического массива из одной функции в другую C++
Увеличение на единицу не срабатывает C++

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

Или воспользуйтесь поиском по форуму:
SatOleg
0 / 0 / 0
Регистрация: 05.08.2011
Сообщений: 30
10.08.2011, 14:24  [ТС]     Перенос в другую единицу трансляции #25
Цитата Сообщение от grizlik78 Посмотреть сообщение
Это странно. Если worker.cc подключён к проекту, то должно было сработать.
Ошибка какая?
А кто сказал что он в проекте =) Всем спасибо
Yandex
Объявления
10.08.2011, 14:24     Перенос в другую единицу трансляции
Ответ Создать тему
Опции темы

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