Goodefine писал(а):Goldsmith писал(а):
Глобальные переменные - вселенское зло. Используйте их, когда без них уж совсем никак (то есть практически никогда).
Насчет практически никогда - если нетрудно, приведите пример, как основному циклу программы для авр, например, обмениваться данными с обработчиками прерываний.
+1
Я как не сторонник паления из пушки по воробьям ( программирования на ЯВУ для МК ) буду неодобряемо понят, но у программера, пишущего на асме, этот вопрос вообще не возник бы. И что страшного, если второй результат передан не через идентификатор функции, а через параметр, обозначенный в списке параметров вызова функции ? Жизнь остановилась, метеорит взорвался ?
"Я буду писать на 'C', потому что у меня очень объемная задача, которая еле в Мегу128 влезает, а время жмет" - это я понимаю и приветствую. Но "Я буду писать на 'C', потому что это круто, да и заморачиваться архитектурой МК не нужно - накорябал - и работает" - это мне чуждо. Пожалуйста, если тебе гирляндой помигать - бог в помочь. Но если, не приведи аллах, такое пишется для управления реактором - остановите Землю, я сойду. Или это пишет профи высокого класса, который ясно представляет, как его исходник трансформируется в конкретный код ( но такие в эху вопросов не задают ), или же скомпиленный код тщательно анализируется - а не накосячил ли компайлер, может, где-то он меня неправильно понял ? Я сильно сумняваюся в такой скрупулезности. Прогнал пару тестов - и долбись оно конем. Но как показывют теоретики, НИКАКОЙ самый тщательный тест не может утверждать, что в проге нет ошибок - он только достоверно может утверждать, что они есть. "Не бывает здоровых людей, бывают недообследованные".
"А что, в прогах на асме не бывает ошибок?" - спросят меня. Бывает, но за логику программы на асме отвечаю я полностью, а тут к ошибкам программиста добавляются даже не ошибки, а разные толкования исходного текста вполне добросовестным компайлером. У меня не идет из памяти, как я таращил глаза на результаты, выданные прогой, откомпиллированной с диагнозом "Все ОК" ( это было не на МК ), а результаты - ни в дугу, ни в Красну Армию. А оказалось, scanf ("%f",&alfa) - она переменную засовывает в alfa
всегда 8-байтную ( double ), затирая рядом лежащую beta, которые обе просто real, и "%f" вообще-то небывает , а есть "%Lf", но лексический анализатор меня об этом не удосужился предупредить ни Error'ом, ни даже Warning'ом.
Ладно, просю пардону у Си-шников, что в их ветку вломился со своим мнением. Я не претендую на истину и не собираюсь продолжать полемику. Я так думаю. А подвигул меня взяться за клаву День Благовещенья и связанный с ним Мускат.