在做串口通信时,上位机有两个对话框page1,page2;在page1中定义全局变量data[5],利用串口事件从单片机采集5个数据分别放到data[0]....data[4]中。在page2中想调用page1中的data[0]....data[4],该如何处理呢?我之前尝试通过extern的方法,出现如下问题:我在page2的源文件开头声明:extern int data[5];然后调用,编译时报错:error LNK2001: unresolved external symbol "int * data" (?data@@3PAHA)我还想过在page2中利用构造page1类对象的方法,但是只能调用data[]的在构造函数中的初始化值,不能调用单片机发送的值。
恳请各位帮忙想想解决方案,谢谢!串口
恳请各位帮忙想想解决方案,谢谢!串口
我在想是不是因为data[3]是数组中的某个元素,所以不能写page1::data[3],或许是其他原因。。
你申明为static变量后,需要给他初始化。比如:
class CTestA
{
public:
CTestA(void);
~CTestA(void);public:
static int a;
};int CTestA::a = 1;
public:
static int data[5];
在类外给数组的五个元素初始化:
int CChuandiDlg::data[0]=0;
int CChuandiDlg::data[1]=1;
int CChuandiDlg::data[2]=2;
int CChuandiDlg::data[3]=3;
int CChuandiDlg::data[4]=4;
报错如下:
error C2466: cannot allocate an array of constant size 0
error C2440: 'initializing' : cannot convert from 'const int' to 'int [5]'
error C2369: 'public: static int * CChuandiDlg::data' : redefinition; different subscripts
error C2369: 'public: static int * CChuandiDlg::data' : redefinition; different subscripts
error C2369: 'public: static int * CChuandiDlg::data' : redefinition; different subscripts
error C2369: 'public: static int * CChuandiDlg::data' : redefinition; different subscripts
关于extern的用法:
在page1.h中如此 extern int data[5];
在page1.cpp中如此 int data[5];
在page2.h中如此 extern int data[5]; 或者#include "page1.h"