为什么 Frama-C v20.0 Calcium 不支持在非全局范围内重新定义 typedef

Why Frama-C v20.0 Calcium does not support redefinition of a typedef in a non-global scope

我正在尝试分析以下 C 程序:

#include <stdio.h>

typedef struct a {
    int x;
    char y;
} alias;

int main()
{
    typedef struct b {
         int x;
         int y;
    } alias;

    alias *var = (unsigned long*) 0x12345678;
    var->y = 0x00;

    return 0;
}

由于typedef在函数"main"中被重新定义,我按照Frama-C的用户手册使用了选项-c11。

-c11 allows the use of some C11 constructs. Currently supported are typedefs redefinition

但是,我收到以下错误:

redefinition of a typedef in a non-global scope is currently unsupported

你能帮我解释一下这个案例吗? 请注意,如果我使用 v12.x - Magnesium.

则不会出现此问题

似乎 frama-c 不支持在局部范围内重新定义 typedef 符号。

C 标准允许这样做,支持自动生成的代码可能很有用,但故意这样做似乎是给代码的读者和维护者造成混淆的好方法。