为什么vc里 #pragma data_seg 无法使用自定义 类型作为共享变量?
typedef struct __SHARE
{
int i=-1,j=-2;
__SHARE(){}
__SHARE(int i_,int j_):i(i_){j=j_;}
}__SHARE;
//----共享节--------------------------
#pragma data_seg("MY_share") //空间的开始
__SHARE shareG(-7,-8);//Χ 永远在初始值
#pragma data_seg() //空间的结束
#pragma comment(linker, "/section:MY_share,RWS")
#define EXC extern"C" __declspec(dllexport) //C++ 的接口
EXC void SetData()
{
shareG.i=10;shareG.j=11;//修改成员变量值
}
EXC int GetData()
{
printf("shareG.i= %d,shareG.j= %d\n",);//这里打印还是初始化时的值 -7,-8
}
无论第一个进程怎么修改 shareG.i与shareG.j成员的值, 第二个exe 读出来的值永远是初始化时的 -7与-8, 无法修改.但如果用内置数据类型作为共享变量 却可以成功修改值.