//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;
Цитата:
Originally posted by Татьяна
В пректе 2 модуля: Unit1 и Unit2:
При выполнении проекта текст 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 добавить
, все то же самое, а вот если еще перенести объявление a в Unit1.cpp, текст Label становится a=2. Почему так происходит?
В пректе 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)
#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;
Код:
//unit1.cpp
#include "Unit1.h"
#include "Unit2.h"
//--------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
double a;
.....
//unit1.h
......
extern double a;
.....
#include "Unit1.h"
#include "Unit2.h"
//--------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
double a;
.....
//unit1.h
......
extern double a;
.....
Вроде так надо...