Я работаю над доработкой некоторого существующего кода 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)
Приветствуется любое понимание. Я искал по этому поводу помощь, но мало что нашел. Думаю, линт - довольно старый инструмент. Спасибо за чтение!
parent
, для которого вы запросили внешнюю связь? - person Mahesh   schedule 16.08.2011#pragma tsection .parent
. Из-за жизненно важного характера приложения мы используем этот тип вещей, чтобы тщательно продумать, где хранятся некоторые адреса. - person Scott S.   schedule 16.08.2011