Проблема с сильной проверкой типа ворса (предупреждение 632) - PullRequest
2 голосов
/ 16 августа 2011

Я работаю над полировкой некоторого существующего кода на 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)

Любое понимание будет с благодарностью. Я искал помощь по этому вопросу, но не нашел много. Я думаю, что линт - довольно старый инструмент. Спасибо за чтение!

1 Ответ

1 голос
/ 16 августа 2011

Это const SubStructureType_T, как в foo, или const struct SubStructureType_T, как в typedef? Обратите внимание, что ключевое слово "struct" появляется только во втором определении.

Они одинаковы?

...