2

新しいコンパイラに移植するために、既存の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はかなり古いツールだと思います。読んでくれてありがとう!

4

1 に答える 1

1

それはconst SubStructureType_T、のようにfoo、またはconst struct SubStructureType_Tのようにtypedef?キーワード「struct」は2番目の定義にのみ表示されることに注意してください。

彼らは同じですか?

于 2011-08-16T15:55:49.523 に答える