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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 38, средняя оценка - 4.63
warobushek
2 / 2 / 0
Регистрация: 08.03.2008
Сообщений: 82
#1

Линковка проекта. - C++

15.07.2008, 06:19. Просмотров 4605. Ответов 4
Метки нет (Все метки)

Уважаемые профессионалы, ткните меня носом в ошибку.
Есть некоторая программа с множеством функций и файлов.

-------------------------------------------------------------------------------
1. В проект входят:
main.cpp
файл1.сpp
файл2.сpp
...
файлN.сpp

2. Структура main.cpp :
#include main.h
<функция main>

3.Структура остальных файлов:
#include main.h
<функции>

4.Структура main.h:
#ifdef SECOND
extern переменная_1;
extern переменная_2;
#endif

#ifndef SECOND
#define SECOND
<включение заголовочных файлов>
<пользовательские типы данных>
<прототипы всех функций проекта>
глобальная переменная_1;
глобальная переменная_2;
#endif

-------------------------------------------------------------------------------

Проблема в том, что на стадии линковки происходит ошибка - "повторное объявление глобальных переменных 1 и 2".
В чем проблема? Защита ведь вроде стоит.

среда - Borland C 3.1++
----------------------------------
Если на словах не понятно, то есть возможность посмотреть сами исходники на http://warobushek.jino-net.ru/work.rar
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.07.2008, 06:19     Линковка проекта.
Посмотрите здесь:

Линковка библиотек в VS C++2010 C++
C++ Линковка, статические, динамические библиотеки - матчасть
C++ Линковка библиотек DirectX SDK
Статическая линковка C++
C++ Правильная линковка библиотек
C++ Линковка плюсового кода
C++ Статическая линковка boost
C++ Статическая линковка
C++ Статическая линковка MinGW
C++ Компиляция, компоновка, линковка (undefined reference to.)
C++ Статическая линковка библиотек в Code::Blocks
Линковка, реализация в заголовочных файлах C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
igor_nf
118 / 12 / 1
Регистрация: 21.08.2007
Сообщений: 222
15.07.2008, 20:35     Линковка проекта. #2
Защита ведь вроде стоит..
Какая защита ? От чего ? Область действия препроцессорного определения - файл. Дальше сам додумаешься, почему у тебя ошибка ?

Добавлено через 2 минуты
P.S. И компилятор меняй побыстрее на какой-нибудь более или менее человеческий..
warobushek
2 / 2 / 0
Регистрация: 08.03.2008
Сообщений: 82
16.07.2008, 06:36  [ТС]     Линковка проекта. #3
Т.е.
1. нужно просто вручную в одном из файлов определить глобальные перменные, а во всех других переменные extern?
2. прототипы тоже будут включены во все файлы?

3. Подскажите, пожалуйста, как получить отпрекомпилированный код всего проекта, а не только одного файла? Для одного файла я использую следующую команду: C:\bc31\bin\cpp.exe -IC:\bc31\include имя_файла
igor_nf
118 / 12 / 1
Регистрация: 21.08.2007
Сообщений: 222
16.07.2008, 09:40     Линковка проекта. #4
Цитата Сообщение от warobushek Посмотреть сообщение
Т.е.
1. нужно просто вручную в одном из файлов определить глобальные перменные, а во всех других переменные extern?
Да
Цитата Сообщение от warobushek Посмотреть сообщение
2. прототипы тоже будут включены во все файлы?
Нет, прототипы достаточно определить в main-хедере, а потом везде его включить в исходные файлы.
Цитата Сообщение от warobushek Посмотреть сообщение
3. Подскажите, пожалуйста, как получить отпрекомпилированный код всего проекта, а не только одного файла? Для одного файла я использую следующую команду: C:\bc31\bin\cpp.exe -IC:\bc31\include имя_файла
Скорми компилятору в строчку не один файл, а все сразу. Да смени компилятор то ! Потом переучиваться на новые стандарты задолбаешься..
warobushek
2 / 2 / 0
Регистрация: 08.03.2008
Сообщений: 82
17.07.2008, 06:58  [ТС]     Линковка проекта. #5
Спасибо за ответы. Компилятор сменю после этой проги
Yandex
Объявления
17.07.2008, 06:58     Линковка проекта.
Ответ Создать тему
Опции темы

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