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

С++ для начинающих

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

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

10.08.2011, 10:36. Просмотров 1970. Ответов 24
Метки нет (Все метки)

Доброго дня!

имею 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()'

был бы рад услышать что-либо в помощь. Спс.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.08.2011, 10:36     Перенос в другую единицу трансляции
Посмотрите здесь:

Постепенно прибавлять единицу к элементам матрицы C++
C++ Как увеличить элемент массива на единицу?
C++ Прибавить к значению переменной единицу
C++ Модуль трансляции
C++ Как использовать шаблонную функцию в другой единице трансляции?
C++ Будут ли все константы гарантированно инициализированы к моменту обращения к ним из разных единиц трансляции
Как вывести мнимую единицу? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SatOleg
0 / 0 / 0
Регистрация: 05.08.2011
Сообщений: 30
10.08.2011, 13:37  [ТС]     Перенос в другую единицу трансляции #21
Цитата Сообщение от lazybiz Посмотреть сообщение
Эта штука должна быть в .cc файле.
то есть должно быть в one.cc или two.cc ? а попытка иницилизировать в worker.cc не увенчалась успехом =(
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
grizlik78
Эксперт С++
 Аватар для grizlik78
1891 / 1423 / 104
Регистрация: 29.05.2011
Сообщений: 2,978
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
Эксперт С++
 Аватар для grizlik78
1891 / 1423 / 104
Регистрация: 29.05.2011
Сообщений: 2,978
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++ Количество столбцов не содержащих единицу
Проверка бита на единицу 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     Перенос в другую единицу трансляции
Ответ Создать тему
Опции темы

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