Easyelectronics.ru

Электроника для всех
Текущее время: 18 июн 2018, 16:26

Часовой пояс: UTC + 5 часов



    • JLCPCB - Платы прототипов всего за 2$ c бесплатной доставкой (при первом заказе)
    • 10 PCBs за $2 для 2 слоев, $15 для 4 слойной, $74 для 6 слойной платы.
    • Крупнейший китайский производитель прототипных плат. 290000+ клиентов & 8000+ заказов в день!
    • LCSC - Крупнейший китайский онлайн магазин радиодеталей.

Начать новую тему Ответить на тему  [ Сообщений: 32 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Слепая печать float/uint(8-32)_t/int(8-32)_t замена printf
СообщениеДобавлено: 12 апр 2018, 12:34 
Старожил
Аватара пользователя

Зарегистрирован: 23 сен 2012, 20:35
Сообщения: 1651
AVI-crak писал(а):
Тесты есть в моём проекте, но беда в том что они одноразовые. Как только решается очередная проблема - тест становится не актуальным.

Тест остается актуальным. То, что проблема решилась вовсе не значит, что в процессе других изменений он не начнет падать.
AVI-crak писал(а):
Да и выглядит он достаточно банально - текстовый и тестовый вывод в одной строчке (просто их много).

Тест должен быть автоматическим, в том смысле что не глазами надо эти строчки сравнивать, а в самом тесте.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Слепая печать float/uint(8-32)_t/int(8-32)_t замена printf
СообщениеДобавлено: 13 апр 2018, 12:59 
Старожил
Аватара пользователя

Зарегистрирован: 30 мар 2015, 23:56
Сообщения: 427
Кхм, затык.
Каким образом можно отличить указатель от переменной? В том смысле что сам GCC всегда знает что в данный момент будет применяться, но нужно знать и мне - для того чтобы выполнить условие перебора действий (разные функции).

В плюсиках с этим делом всё очень просто, но мне нужно на Си.
Вот что-то близкое к этой теме, https://habrahabr.ru/post/352322/. И походу этот код является кроличьей норой, куда может пролезть только один кролик, чуть жирнее или меньше - и дверка не откроется.

_________________
Потоковая OS


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Слепая печать float/uint(8-32)_t/int(8-32)_t замена printf
СообщениеДобавлено: 13 апр 2018, 13:56 
Старожил
Аватара пользователя

Зарегистрирован: 23 сен 2012, 20:35
Сообщения: 1651
AVI-crak писал(а):
Каким образом можно отличить указатель от переменной?

На голом С - никак.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Слепая печать float/uint(8-32)_t/int(8-32)_t замена printf
СообщениеДобавлено: 13 апр 2018, 17:52 
Старожил
Аватара пользователя

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 1814
Указатель - это такая же переменная, только на 4 беззнаковых байта (в случае 32-битного адреса). Опять проблема с терминами, понятиями и вообще логикой действий. Если невозможно понять, что хотел сказать словами, то стопудово и сама прога так же нелогична.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Слепая печать float/uint(8-32)_t/int(8-32)_t замена printf
СообщениеДобавлено: 13 апр 2018, 18:50 
Старожил
Аватара пользователя

Зарегистрирован: 28 янв 2010, 20:18
Сообщения: 411
Что делать если я хочу int число в 16 разрядном виде, или float с заданным количеством знаков после разделителя? Информации о типе здесь будет мало.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Слепая печать float/uint(8-32)_t/int(8-32)_t замена printf
СообщениеДобавлено: 13 апр 2018, 20:22 
Старожил
Аватара пользователя

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 1814
Вот в том то и беда, что предложенное никак не может быть универсальной заменой. Это лишь частный случай с очень и очень ограниченным применением. До такой степени ограниченным, что практически никогда не будет востребован на практике, из-за очень неудобной и никак не регулируемой формы представления чисел.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Слепая печать float/uint(8-32)_t/int(8-32)_t замена printf
СообщениеДобавлено: 14 апр 2018, 00:44 
Старожил
Аватара пользователя

Зарегистрирован: 30 мар 2015, 23:56
Сообщения: 427
BusMaster писал(а):
Опять проблема с терминами, понятиями и вообще логикой действий.

Логика очень проста, определить: является ли аргумент макроса указателем.
BusMaster писал(а):
Что делать если я хочу int число в 16 разрядном виде

Если клиент не прав - мы его ненавидим.
Вам придётся использовать printf как есть. И отказаться от главной идеи макроса printo - автоматического опознавания аргумента печати.
Повторюсь printo предназначен для печати переменных, которые в режиме создания алгоритма могут поменять свой тип. Естественно не с божьей помощью, а исключительно за счёт кривизны рук самого программиста. В случае использования printf - его символьный аргумент придётся переписывать при каждой смене типа переменной. А если это разделяемый алгоритм на несколько десятков каталогов, или просто не помещается в целом виде на экране монитора - то подобная коррекция может достаточно сильно затянуться.
Ярким примером подобного алгоритма может служить почти любой драйвер из каталога hall. Там конечный автомат работает через внешнюю структуру. Описание поведения автомата и сами функции могут быть совершенно в произвольных местах, не поддающихся логике и здравому смыслу.

_________________
Потоковая OS


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 32 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: mazahakka v2.0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB