我想适度简化问题,可能问题没说清楚
C库编译为静态库
里面有个全局变量结构
slavet slave[10];
slave.outputs 为uint8 指针
typedef struct slave
{
...
uint8 *outputs;
...
}
static type_b b;
slave[0].outputs = (uint8 *)b;
以上都在C静态库中
在C++里
调用update可见赋值成功
但是再调用blink 发现赋值又丢了
extern slavet slave[10];
static void blink() {
...
for (int j = 0 ; j < 2; j++)
{
printf(" %2.2x", *(slave[0].outputs + j));
}
printf("\n");
}
void Mbslave::update(int value)
{
...
if (value != 0) {
slave[0].outputs[0] = (unsigned char)(value & 0xff);
slave[0].outputs[1] = (unsigned char)(value >> 8 & 0xff);
}
for (int j = 0 ; j < 2; j++)
{
printf(" %2.2x", *(slave[0].outputs + j));
}
printf("\n");
}
【 在 foliver 的大作中提到: 】
: 提问题要把代码贴全。
: 不过我猜你使用了全局变量的副本
: --来自微水木3.5.10
: ...................
--
FROM 123.113.252.*