我正在努力改进一些现有的C代码,以便将其移植到新的编译器(嵌入式软件,我们正在切换硬件)。所以我试图用lint擦除当前代码,并且我被lint决定的一个强类型违规的赋值所困扰。
我得到的错误:
--- Module: GenericFileName.c
GenericFileName.c ... Warning 632: Assignment to strong type
(SubStructureType_T) in context: assignment
它引用的代码行(为便于阅读而更改了名称):
void foo(void)
{
extern const StructureType_T parent;
const SubStructureType_T *localChild;
localChild = parent.child; //<-- lint complains about this assignment
...
}
StructureType_T的相关部分:
typedef struct
{
const struct SubStructureType_T *child;
...
}StructureType_T;
最后,lint选项启用强类型检查:
-strong(AcXJcb)
非常感谢任何见解。我一直在寻找帮助,但没有找到太多帮助。我猜lint是一个非常古老的工具。谢谢你的阅读!
答案 0 :(得分:1)
是const SubStructureType_T
,foo
还是const struct SubStructureType_T
?typedef
?请注意,关键字“struct”仅出现在第二个定义中。
他们是一样的吗?