我想适度简化问题,可能问题没说清楚
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.*