Компилятор gcc / mingw, который Codeblocks использует по умолчанию, неэффективен, когда доходит до выдачи ошибок компилятора для C нарушений совместимости языковых типов. Если вы запустите его с настройками по умолчанию, вы получите:
предупреждение: передача аргумента 1 'insertreg' из несовместимого типа указателя
Теперь до C языка, вышеуказанного достаточно для соответствия компилятору. C не говорит об ошибках и предупреждениях, только о диагностике c сообщений.
Ваш код недействителен C, так как две структуры совместимы только в том случае, если они имеют одинаковый тег структуры, если все их члены имеют одинаковый тип и одно и то же имя переменной. Вы используете разные теги структуры и разные имена переменных, поэтому они несовместимы.
Формально, поскольку типы несовместимы, ваш код является «нарушением ограничения правила простого присваивания» и компилятором должен дать вам диагностическое сообщение c, что и произошло.
Я настоятельно рекомендую всем новичкам компилировать со строгим соблюдением стандартов и максимальным количеством предупреждений. При g cc это означает -std=c11 -pedantic-errors -Wall -Wextra
. Ошибки Pedanti c, в частности, блокируют компиляцию кода в исполняемый файл, даже если есть C языковых нарушений.
В частности, в кодовых блоках: go Настройки -> Компилятор, затем проверьте соответствующие параметры там , например «Включить дополнительные предупреждения компилятора [-Wextra]», чтобы включить -Wextra
.