Hello, Andrey Solomatov! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Wed, 26 Oct 2005 07:35:52
+0000 (UTC):
AS>>> Ну, насколько мне известно результат -1 полученный от 127 +1 AS>>> всегда интерпретируется как ошибка. И ЯВУ придумывались не AS>>> для
DO>> Где и когда это интерпретируется как ошибка?
AS> В флаге OVR или аналогичном.
В каком ЯВУ есть флаг OVR?
AS> Если это сложение слов через байты - то это переполнение AS> используется для переноса в старший байт.
Да ну? А я почему-то всегда думал, что используется флаг переноса...
AS> [кусь]
AS>>> int i; AS>>> int *p = &i;
AS>>> p++; /* скажешь не хак? */
DO>> Нет конечно.
AS> Угу. AS> С учётом того, что теперь указатель указывает неизвестно на что.
А на что ты хотел, чтобы он указывал, когда писал это?
AS>>> Отказ от проверки типизации. Полный.
DO>> Я тебе уже показывал полный отказ от типизации в паскале.
AS> Это расширение языка.
Нет, это никакое не расширение, это язык Турбо Паскаль. Вот в stony brook pascal или в virtual pascal или в free pascal есть расширения языка turbo (borland) pascal. А ты про какой говоришь?
AS> Наподобие word* myreg = (word*)(12381324);
AS>>> В паскале все указатели типизированы.
DO>> Нет. Есть просто pointer.
AS> Это расширение языка.
Какого? Впрочем я и в стандартном виртовском паскале тебе сделаю все что угодно с любыми указателями. Есть там такой механизм, как вариантный тип (аналог сишного union или фортрановского common), который позволяет хакерствовать как угодно. В языке TP это просто сделали несколько более удобным, хотя и не дотянули до С.
AS>>> А у меня просто вкусы другие.
DO>> Причем тут вкусы? Какой надо иметь вкус, чтобы такое вот DO>> понтравилось?
AS> А я всегда предпочитаю вывод организовывать в виде множества AS> маленьких функций, специализированных под данную переменную/поле.
А Борланд в своих библиотеках предпочел процитированный способ.
AS> Вывод организую статически.
А если надо динамически что будешь делать?
AS> При необходимости - переключаюсь на другие ветки алгоритма. AS> А разбираться в закорючках форматной строки [x]printf - ломы-ыы.
В printf кстати весьма продуманный механизм шаблонов заложен. Куда более развитый, чем в паскалевском write
AS> Соответственно PrntMsg я просто никогда не пользовался.
Возникает вопрос что и какого объема ты писал. В небольших программах это можно применять, в больших - напрягать начинает.
DO>> В командной строке чего?
AS> Форматной строке printf/fprintf/sprintf и т.д.
Очень гибкий и удобный механизм для терминального вывода. В паскале ничего подобного нет, а написать как видишь хоть и можно, но крайне коряво. Потому как язык не позволяет, убогий он.
DO>> А теперь поинтересуйся как в паскале управлять форматом и DO>> шириной вывода (write(d:3:2)). И попробуй задать этот формат DO>> не в тексте программы, а как параметр.
AS> Да вроде получалось. AS> А "как параметр" - никогда не пользую вообще, как уже говорил.
А что будешь делать, если понадобится? Вот есть у меня программа (кстати мне ее мой товарищь на Дельфи писал), которая "разговаривает" с микроконтроллером и вытаскивает из него всякие значения. Ток, напряжение, мощность... Причем программа в контроллере не жестко фиксивана. В зависимости от версии и типа устройства параметры там хрянятся по разному, причем не все версии уже есть. Соотвественно РСшной программе нужен конфиг, где писалось бы по какому адресу лежит что, с каким коэффициентом, в каких единицах и с какой точностью это выводить. Так вот последнее задается тем самым шаблоном из какой-то дельфийской функции, похожим на printf'овский шаблон.
AS> Наверное у меня вот так мозги завёрнуты.
Или сокрее не возникало таких задач.
AS>>> А что делают псевдокомментарии вверху?
DO>> А в хелпе посмотри. Тоже кстати милая для "продуманного языка" штука - DO>> ключик B+ - управляет полностью вычислять логическое выражение или нет. DO>> И кому такое в голову пришло?
AS> А это уже не язык, а разрешение.
Нет, это именно язык, про который тут говорили как про продуманный. Впрочем возможность не вычислять полностью логическое выражение - это как раз и есть ТР'шное расширение. Мне интересно чем надо было думать, чтобы вычислять его полностью...
AS> Си тоже сегодня можно загнать в режим K&R. И?
Далеко не всякий компилятор это поддерживает, а если да, то это не будет стандартным С.
AS>>> А то я щазз начну ругацца "а вот См не умеет работать с AS>>> битовыми полями. С битами - может, в т.ч. и как с элементами AS>>> слова, а вот с полями, скажем в три DO>> бита - нет"
DO>> А как он должен с ними работать?
AS> CCM0.ACC0 = 1; // Это вроде работает AS> CCM0.CCMOD0 = 3; // А это - нет. :((
А что делает?
AS>>> Таки sprintf - это часть языка или как?
DO>> Нет, но язык позволяет написать такую функцию, в отличие от DO>> паскаля.
AS> Но как-то по жизни сложилось так, что этой возможностью я AS> никогда не пользовался. Т.е. отсутствие этой возможности меня AS> не слишком напрягает.
А авторов ТР как видишь напрягло, раз они formatstr написали...
dima
formatting link