Это похоже на ложное срабатывание. С кодом проблем нет - хотя стиль немного экзотичен c, он все действителен C.
Если замечание касается фактического отсутствия инициализации, это может быть связано с инструментом, который не проверка звонящего. Но даже если анализатор принимает во внимание только локальную единицу трансляции, он не может go выключить и предположить, что переданные переменные по умолчанию не инициализированы. Это было бы очень странное предположение.
Возможно, анализатор испугался, что вы на самом деле передаете unsigned (*myarray)[5]
функции, ожидающей unsigned (*myarray)[]
(указатель на неполный тип, массив неопределенного размера). Вы можете попробовать изменить параметр на unsigned (*myarray)[size])
и посмотреть, улучшит ли это работу инструмент.
Изменить: типы указателей на массивы совместимы, поэтому инструмент не должен жаловаться и по этой причине. Согласно C17 6.7.6.2/6, один или оба типа массива могут не указывать спецификатор размера и по-прежнему быть совместимыми:
Для совместимости двух типов массивов оба должны иметь совместимые типы элементов. , и если оба спецификатора размера присутствуют и являются целочисленными константными выражениями, тогда оба спецификатора размера должны иметь одно и то же постоянное значение.