根据结构体中的变量顺序,sscanf到uint8_t的行为会有所不同

时间:2014-04-30 07:28:05

标签: c gcc scanf uint8t

使用sscanf时遇到了奇怪的行为。根据结构中a和b的顺序,其中一个得到0。

typedef struct MyStructure{
    uint8_t  a;
    uint8_t  b;
}MyStructure;

这里的代码让我感到困惑:

if (2 == sscanf(rawCommand,"%*s %*s %"SCNu8" %"SCNu8"", &a, &b)){
    ... some code
}

当我将结构体中变量的顺序更改为:

typedef struct MyStructure{
    uint8_t  b;
    uint8_t  a;
}MyStructure;

sscanf返回2但a为0;

我已经在Linux上的32位GCC上进行了测试,上面的代码在两个方面都有效。但是当在Windows 7上使用64位GCC进行编译时,它的行为就像我提到的那样。在两个系统上我都使用GCC 4.8.1。

0 个答案:

没有答案