Цитата Сообщение от rg_software
переменную в одном модуле переменную как int, а в другом -- как extern float; этот код компилируется (!) т.к. линковка идёт по именам без проверки типов (в стандартном С)... естественно, в первом
Для этого используют *.h. И кроме того, вот hitech software орёт, мол signature don't match. Ну да, warning. Отключаемый. Так их и читать иногда полезно.

модуле все инструкции генерируются для целых, во втором -- для вещественных чисел, и программа глючит по-страшному...
Потому, как в ассемблере и компоновщике нет понятия типа данных. Он там не нужен. То же касается любого языка построенного поверх данного компоновщика...

Неужели язык должен разрешать компиляцию таких ошибочных кусков?
Неужели не должен? Всё на твоей совести.