Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Оьласть видимости переменной

3.3K
29 октября 2004 года
Татьяна
17 / / 23.01.2004
В пректе 2 модуля: Unit1 и Unit2:
Код:
//unit1.cpp
#include "Unit1.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
  a=2;
  func();
}
//---------------------------------------------------------------------------
//unit1.h

 ......

double a;
 .....



//unit2.cpp

#pragma hdrstop

#include "Unit2.h"
#include "Unit1.h"

void func(){
  Form1->Label1->Caption=("a="+FloatToStr(a));
}
//---------------------------------------------------------------------------

#pragma package(smart_init)


При выполнении проекта текст Label a=0, но при отладке при наведении курсора в func на а высвечивается 2 :?: :!: И при компиляции выдается сообщение [Linker Warning] Public symbol '_a' defined in both module D:\БИЛДЕР\MY_PROJECTS\EXTERN\UNIT1.OBJ and D:\БИЛДЕР\MY_PROJECTS\EXTERN\UNIT2.OBJ

Если в unit2.cpp добавить
 
Код:
extern double a;
, все то же самое, а вот если еще перенести объявление a в Unit1.cpp, текст Label становится a=2. Почему так происходит?
246
29 октября 2004 года
GIZMO
1.8K / / 30.07.2004
Цитата:
Originally posted by Татьяна
В пректе 2 модуля: Unit1 и Unit2:
Код:
//unit1.cpp
#include "Unit1.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
  a=2;
  func();
}
//---------------------------------------------------------------------------
//unit1.h

 ......

double a;
 .....



//unit2.cpp

#pragma hdrstop

#include "Unit2.h"
#include "Unit1.h"

void func(){
  Form1->Label1->Caption=("a="+FloatToStr(a));
}
//---------------------------------------------------------------------------

#pragma package(smart_init)


При выполнении проекта текст Label a=0, но при отладке при наведении курсора в func на а высвечивается 2 :?: :!: И при компиляции выдается сообщение [Linker Warning] Public symbol '_a' defined in both module D:\БИЛДЕР\MY_PROJECTS\EXTERN\UNIT1.OBJ and D:\БИЛДЕР\MY_PROJECTS\EXTERN\UNIT2.OBJ

Если в unit2.cpp добавить
 
Код:
extern double a;
, все то же самое, а вот если еще перенести объявление a в Unit1.cpp, текст Label становится a=2. Почему так происходит?


Код:
//unit1.cpp
#include "Unit1.h"
#include "Unit2.h"
//--------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
double a;
.....
//unit1.h

 ......

extern double a;
 .....

Вроде так надо...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог