Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > вненшние переменные, внутренние переменные


Автор: kLASTER 3.6.2013, 13:14
Здравствуйте!
Подскажите пжл, как соединить два файла для понятия темы "продолжительность жизни внешних файлов".
Вот пример, есть два файла:
Код

//support.cpp
//Компилировать вместе с external.cpp(ЭТО КАК?)
#include <iostream>
extern double warming;

void update(double dt);
void local();

using std::cout;
void update(double dt)
{
  extern double warming;
  warming += dt;
  cout << "Updating global warming to " << warming;
  cout << " degrees.\n";
}
void local()
{
  double warming = 0.8;
  cout << "Local warming = " << warming << " degrees.\n";
  cout << "But global warming = " << ::warming;
  cout << " degrees.\n";
}


Вот второй:
Код

//external.cpp
//Компилировать вместе с support.cpp(ЭТО КАК?)
#include <iostream>

using namespace std;

double warming = 0.3;

void update(double dt);
void local();

int main()
{  
  cout << "Global warming is " << warming << " degrees.\n";
  update(0.1);
  cout << "Global warming is " << warming << " degrees.\n";
  local();
  cout << "Global warming is " << warming << " degrees.\n";
  
  system("PAUSE");
  return 0;
}

Проблема в том, что если я делаю проект, то выдается ошибка
 C:\Dev-Cpp\Makefile.win [Build Error]  [../Users/пк/Desktop/main.o] Error 1 
Заранее спасибо!

Автор: baldina 3.6.2013, 13:29
Цитата(kLASTER @  3.6.2013,  13:14 Найти цитируемый пост)
как соединить два файла

оба файла добавить в проект. компиляция будет раздельная, а вот в линковке (сборке .exe) убдут участвовать оба (объектных) файла

Автор: kLASTER 3.6.2013, 13:55
Если я правильно понял, то:
 - создаю проект
 - добавляю в проект 2 этих файла

и у меня снова эта же ошибка. Что она означает, неправильная компиляция или ошибка в синтаксисе?

Автор: bsa 3.6.2013, 16:18
kLASTER, реальная ошибка выдается чуть раньше, указанной тобой.

Автор: baldina 3.6.2013, 17:07
Цитата(kLASTER @  3.6.2013,  13:14 Найти цитируемый пост)
для понятия темы "продолжительность жизни внешних файлов"

интересно, как это поможет понять тему)))))
тут сначала нужно понять, что требуется понять

Автор: EgoBrain 4.6.2013, 07:00
Может быть тема "продолжительность жизни внешних переменных" всетаки?

Этот пример демонстрирует использование внешней голобальной переменной warming.
Она объявляется в главном модуле external.cpp (название только запутывает), и используется функциями из доп.модуля.
В функции update() используется переменная warming объявленная в extern.cpp в функции local() своя внутренняя, у которой "продолжительность жизни" равно продолжительности выполнения функции.

Код демонстрирует не время жизни а использование операторов extern и ::, про вермя жизни наверное говорится в теории к упражнению...

Автор: kLASTER 4.6.2013, 08:03
да, "... переменных" - ошибся я. Спасибо за поправку.


EgoBrain, спасибо. Код действительно работает. Не мог бы подсказать, как его заставить скомпилировать.

Автор: kLASTER 4.6.2013, 08:35
Всем огромное спасибо!!! Разобрался

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)