Перейти к содержанию
    

Компилятор IAR 8.5 Си не дает ошибку

7 минут назад, jcxz сказал:

Расчёт выполняется на основе входных значений желаемой тактовой частоты и источника тактирования (CCLK_VAL, CCLK_SRC).

Я тоже так делал, но для себя вынес, что лучше всякие пробы финальных частот тактирования (и не только их) осуществлять в runtime при инициализации драйвера соответствующей периферии. Кода с гулькин хвост, зато сразу чтением регистров тактирования понятно, достаточно ли удовлетворительны условия (например, для MAC-контроллера STM32F4 частота AHB должна быть минимум 25 МГц) для запуска.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 часа назад, Arlleex сказал:

Я тоже так делал, но для себя вынес, что лучше всякие пробы финальных частот тактирования (и не только их) осуществлять в runtime при инициализации драйвера соответствующей периферии.

У меня там не только делители и прочее считаются, но и проверка реализуемости делается. Скажем для модуля АЦП должна быть определённая частота, которая получается из какой-то из частот блока тактирования МК. И может оказаться, что при данной заданной частоте МК, желаемая частота АЦП нереализуема. Или не обязательно АЦП, а ещё какой-то периферии. Тогда у меня код просто не скомпилится - я сразу увижу, что задал недопустимую частоту. И увижу где именно конфликты.

С runtime-вычислением это невозможно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 минут назад, jcxz сказал:

С runtime-вычислением это невозможно.

Ну почему... В runtime оно скомпилится, набор нужных условий провалится и вывалится warning (в отладочный интерфейс, например) или error, в зависимости от критичности:wink: Но я соглашусь, что бывает проще проверить на этапе сборки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 часов назад, Arlleex сказал:

Подключения там делают только тех файлов, без которых исходный заголовочник не может быть обработан в месте, где его подключили.

Вот это поворот!!! Вот это мастерское переобувание на 180°. Ровно об это я и говорил с самого начала. Даже ericN привёл пример, как должен выглядеть хидер в данном случае. 

12 часов назад, Arlleex сказал:

Вопрос заключался совсем в другом - работодатель хочет знать, насколько вы в курсе базовых особенностей низкоуровневых языков программирования

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

12 часов назад, jcxz сказал:

PS: Расстрелять? 

вполне годное решение. Может кто-нибудь написал бы лучше... но тем не менее - это ваш include.h. Вы в нем хозяин. Вы его написали и выдали в "общий проект". Если кто-то захочет использовать - он подключит ваш  include.h в свой .с или даже в свой .h (ему нет необходимости его корректировать). Прогер этот ваш include.h может себе включить в любом порядке с другими заголовками. Очерёдность a.h, b.h или include.h ни как не повлияет на "соберётся или нет проект". 

Я же говорю о другом. Написал прогер myCalc.c и myCalc.h. Я взял его расчет и подключил в свой проект. подтянул myCalc.h. Запускаешь сборку - ошибка. Неизвестный тип T_type_some. Ищешь где этот тип описан. Нашел. Подключил myInclude.h в .с. Ошибка - не определёно 10 типов из myInclude.h. Ещё подключаешь 5 хидеров - ошибка, не определено 50 типов.......  когда это всё собрал - получилось в .с 10 инклуде вместо одного. и далее.... по какой-нибудь причине поменял очерёдность - всё рухнуло. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, razrab83 сказал:

Ровно об это я и говорил с самого начала. Даже ericN привёл пример, как должен выглядеть хидер в данном случае. 

Вы привели одну строчку с объявлением указателя на структуру, тип которой не известен. И сказали, что остальной хидер - большой, не приведен просто. Откуда мне знать, что в том хидере было еще? В общем случае, там вполне могли быть какие-то куски, которые делали бы явное подключение этого заголовка в другом не гибким. И я сказал, что не всегда можно написать не зависимые от порядка заголовки.
 

Цитата

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

Ну тогда он итак знал, что возьмет вас на работу, ибо ответ в стиле

Цитата

Я не знаю правильный ответ, но это говнокод. Так писать нельзя и я так не пишу.

бесспорно, мощный, но навыков не показывает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 часа назад, Arlleex сказал:

Ну тогда он итак знал, что возьмет вас на работу, ибо ответ в стиле

Цитата

Я не знаю правильный ответ, но это говнокод. Так писать нельзя и я так не пишу.

бесспорно, мощный, но навыков не показывает.

Однако показывает решимость получать при необходимости новые знания, а это гораздо ценнее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 часа назад, Arlleex сказал:
Цитата

Я не знаю правильный ответ, но это говнокод. Так писать нельзя и я так не пишу.

бесспорно, мощный, но навыков не показывает.

Работодатель: "Уважаемый, почему от Вас чем-то эээээ.... пованивает?"  

Соискатель: "У меня имеется навык ковыряния в говнокоде."

:biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, Сергей Борщ сказал:

Однако показывает решимость получать при необходимости новые знания, а это гораздо ценнее.

Это ничего не показывает, когда приходишь устраиваться "программистом на Си".

"Я не знаю, я разберусь по ходу работы" - вряд ли такой ответ хотят услышать от человека, в обязанности которого будет входить как написание своего, так и рефакторинг/сопровождение чужого кода.

Но если устраиваешься так, что иногда (формально) нужно программировать - тогда такой ответ покатит.

И хорошо, когда встроенная чуйка подсказывает, что в куске кода что-то не так. Но сколько в Си возможностей выстрелить в ногу, даже когда код выглядит более менее нормально?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

  

В 07.08.2023 в 15:45, Arlleex сказал:
В 07.08.2023 в 14:44, Сергей Борщ сказал:

Однако показывает решимость получать при необходимости новые знания, а это гораздо ценнее.

Это ничего не показывает, когда приходишь устраиваться "программистом на Си".

"Я не знаю, я разберусь по ходу работы" - вряд ли такой ответ хотят услышать

Показывает. Во первых - инженер не должен знать всё на память, но должен знать где взять информацию и как решить задачу. 

Во вторых подобные задачи на тестах задают часто и "подводный камень" этой задачи - не дать правильный ответ, а проверить - понимает ли соискатель, что знаковое и беззнаковое сравнение могут дать не ожидаемый результат.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

20 минут назад, Arlleex сказал:

"Я не знаю, я разберусь по ходу работы" - вряд ли такой ответ хотят услышать

поэтому я таково ответа не давал. не надо мне приписывать того, чего я не говорил. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 часа назад, razrab83 сказал:

поэтому я таково ответа не давал. не надо мне приписывать того, чего я не говорил. 

А как можно иначе трактовать вот это?

В 04.08.2023 в 12:42, razrab83 сказал:

Мне когда на собеседе дали такую задачу и спросили "-В иф зайдет?", я сказал, "-Я не знаю правильный ответ, но это говнокод. Так писать нельзя и я так не пишу. Если я встречу такой код, я открою справочник, посмотрю куда преобразует СИ и сделаю ЯВНОЕ приведени типа."

  

2 часа назад, ericN сказал:

Во первых - инженер не должен знать всё на память, но должен знать где взять информацию и как решить задачу. 

Всего не запомнишь, согласен.

Как тогда определить качество знаний будущего сотрудника, если он будет на любой провокационный вопрос по теме его проф. деятельности отвечать "ну я не знаю правильный ответ, но тут есть подвох, который можно будет решить, открыв учебник или какие-то другие ресурсы", заведомо ожидая ловушек в вопросах? Вот человек утверждал, что plain char в Си по-дефолту знаковый. Ну будет он листать чьи-то (или свои) исходники, просматривать их и в упор не видеть баг, с этим связанный. Как он приобретет знание об этой особенности? Только поковырявшись, разобравшись, набив шишек. А потом на собеседовании (вдруг) если задатут такой вопрос - он не будет говорить о том, что "я не знаю, я так не пишу". Он вполне однозначно ответит, потому что уже был опыт прокатиться на граблях.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 hours ago, Arlleex said:

Как тогда определить качество знаний будущего сотрудника

Если собеседование проводит человек в теме, то у него есть вопросы, показывающие, насколько в теме его собеседник. Например, попробуйте потенциального "шкафника" спросить по каким параметрам он выбирает автоматические выключатели. Если уже после второго задумался, то можно прощаться, а если сходу перечисляет 6, а то и 7, то человек явно вдумчиво изучал каталоги и можно задавать более тонкие вопросы, показывающие, как человек подходит к решению задач и организации своей работы.

И такие вопросы-маркеры есть у всех, кто сам в теме и имеет опыт поиска нужных людей.

3 hours ago, Arlleex said:

Вот человек утверждал, что plain char в Си по-дефолту знаковый. Ну будет он листать чьи-то (или свои) исходники, просматривать их и в упор не видеть баг, с этим связанный. Как он приобретет знание об этой особенности?

А для чего это знать?

Такой вопрос интересно задавать, наверно, молодым инженерам. Тут интересно, как ответят. По-моему, вполне тянет на вопрос-маркер.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

27 минут назад, tonyk_av сказал:

А для чего это знать?

Например, чтобы быстро приводить код в порядок, сходу видеть потенциально скользкие места и т.д. Для сокращения времени отладки/отлова багов. Это же само собой разумеющееся. Зачем шеф-повару знания о совместимости вкусов? Ведь можно прийти на кухню и по ходу дела, прямо на месте разбираться. Да?:wink:

Способность учиться, разумеется, очень востребована. Но, ИМХО, на первом месте - уже накопленный бэкграунд. И если его нет - (по Вашей аналогии с "шкафником") - собеседование закончено.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 8/7/2023 at 8:43 PM, Arlleex said:

Например, чтобы быстро приводить код в порядок, сходу видеть потенциально скользкие места и т.д.

Ну, так какой же по умолчанию char в ANSI C ?

Знаковый или беззнаковый ?

Я серьезно :blush:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 минуты назад, dimka76 сказал:

Ну, так какой же по умолчанию char в ANSI C ?

Знаковый или беззнаковый ?

В разных компиляторах по-разному, т.к. implementation defined.

Конкретно "практикой" определить можно, получив значение CHAR_MIN.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...