Я и говорю, каша в голове. Ни SIGNAL, ни ISR() к языку программирования C не имеет никакого отношения. Там вообще про прерывания ничего не известно. Если очень неймётся, то можно плюнуть на ISR(), написать свой пролог-эпилог обработчика на асме, из которого вызывать обычную C-функцию (собственно это и делает ISR). Для этого достаточно даташита, знания ассемблера и C, ничего про особенности конкретного компилятора можно вообще не знать. А про структуры и юнионы известно очень даже и разночтений быть не может, они определены в стандарте ISO9899 (
http://pc.fk0.name …ooks/c/iso9899-c99.pdf) и вменяемые компиляторы (за исключением отдельных коммерческих из разряда "для любителей"), включая GCC, стандарту вполне следуют. И не советую
читать за обедом советские газеты русскоязычную литературу русскоязычных же авторов из разряда "как программировать XXX". Обычно рождает дичайшую кашу в голове и отбрасывает на годы назад. Советую овладеть инструментом в рамках программирования на IBM-PC и таки классическую литературу. Керниаган, Ритчи, Пайк, Таненбаум, Страуструп, Вирт и даже Э. Реймонд (искусство программирования для Unix), как хороший howto. Из русскоязычного вспоминается только Большагов и Иртегов с "Операционными системами", но в бумажном виде их нет.