реклама на сайте
подробности

 
 
6 страниц V  < 1 2 3 4 > »   
Closed TopicStart new topic
> А почему так инициализация
DASM
сообщение Jul 25 2018, 15:30
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



Еще интересный вопрос возник. Как вам такая штука
Код
int searchDB (int v)
{
//..............
}
.... main...
searchDB('1234');

Тут gcc дает warning что то там multibyte, точно не помню. Просто интересное применение, раньше как-то не встречал такую идею.

Цитата(Forger @ Jul 25 2018, 18:26) *
Вполне возможно, что у него соотв. ворнинги запрещены через соотв. ключи компиляции самой средой.

По умолчанию? Он ругается на куда более безопасные вещи. Ну ладно, с этим вопросом разобрались вроде
Go to the top of the page
 
+Quote Post
Forger
сообщение Jul 25 2018, 15:30
Сообщение #17


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(DASM @ Jul 25 2018, 18:27) *
Еще интересный вопрос возник. Как вам такая штука
Код
int searchDB (int v)
....
searchDB('1234');

Тут gcc дает warning что то там multibyte, точно не помню. Просто интересное применение, раньше как-то не встречал такую идею.

На известном ресурсе полно подобного "кода". Смысл его тут цитировать?

Код
Он ругается на куда более безопасные вещи
M$ - уже давно не образец для подражания.


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
DASM
сообщение Jul 25 2018, 15:31
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



Цитата(Forger @ Jul 25 2018, 18:30) *
На известном ресурсе полно подобного "кода". Смысл его тут цитировать?

Стоп стоп. Почему Вы считаете это говнокодом и как бы Вы сделали, не городя монстра? По сути из имени получается бесплатно подобие хэша. Иначе варианты начинают хотеть strcmp, или, страшно сказать std::map . А тут бесплатно
Go to the top of the page
 
+Quote Post
Forger
сообщение Jul 25 2018, 15:39
Сообщение #19


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(DASM @ Jul 25 2018, 18:31) *
Стоп стоп. Почему Вы считаете это говнокодом и как бы Вы сделали, не городя монстра?

Разве не очевидно? Функция ожидает int, а получает то, что дадут.
В подобных ситуациях делают ряд функций, каждая из которых работает со своим типом данных.
Либо передается в одну функцию ссылка на определенную структура, где заранее расписаны "детали" поиска и что искать.
Существуют и другие способы, но там уже используются чисто плюсы и их "фишки".

Цитата
По сути из имени получается бесплатно подобие хэша.
Неявно, неочевидно. Со временем развития проекта из-за этого могут возникнуть проблемы, которые найти будет довольно сложно.
Компилятор заругается, если будет не 4 цифры, а больше или int на неком железе окажется равным не 4 байтам. Но ведь это лишь предупреждение... Не дай бог это попадет в библиотеку, где линкер при сборке этого просто не увидит!
А если дать всего 3 цифры, то что получит на входе функция? Лотерею из мусора в стеке?...


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
DASM
сообщение Jul 25 2018, 16:01
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



Цитата(Forger @ Jul 25 2018, 18:39) *
Разве не очевидно? Функция ожидает int, а получает то, что дадут.
В подобных ситуациях делают ряд функций, каждая из которых работает со своим типом данных.
Либо передается в одну функцию ссылка на определенную структура, где заранее расписаны "детали" поиска и что искать.
Существуют и другие способы, но там уже используются чисто плюсы и их "фишки".

Неявно, неочевидно. Со временем развития проекта из-за этого могут возникнуть проблемы, которые найти будет довольно сложно.
Компилятор заругается, если будет не 4 цифры, а больше или int на неком железе окажется равным не 4 байтам. Но ведь это лишь предупреждение... Не дай бог это попадет в библиотеку, где линкер при сборке этого просто не увидит!
А если дать всего 3 цифры, то что получит на входе функция? Лотерею из мусора в стеке?...

Думаю Вы правы. Просто дали проект, сижу разбираюсь. Многие вещи интересные. Причем 90% кода по всем правилам, что наводит на мысли об опыте автора. А раз применяет такие трюки - может в этом есть смысл? Я то сам пишу удивительно пресный код, таких открытий он не сулит. Но у меня обычно больший overhead, не люблю оптимизировать
Go to the top of the page
 
+Quote Post
Forger
сообщение Jul 25 2018, 16:10
Сообщение #21


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(DASM @ Jul 25 2018, 19:01) *
Просто дали проект, сижу разбираюсь.

Сочувствую sad.gif Доделывать начатое за другими - мало кому по кайфу ...

Цитата
Но у меня обычно больший overhead, не люблю оптимизировать
В таких ситуациях когда флэш очень толстая и камень имеет огромный запас производительности я задаю себе один простой вопрос: "а стоит ли овчинка выделки?" wink.gif



--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jul 25 2018, 16:19
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(DASM @ Jul 25 2018, 18:31) *
Иначе варианты начинают хотеть strcmp, или, страшно сказать std::map . А тут бесплатно

Нормально делается и без strcmp:
Код
  #define M(x0,x1,x2,x3) ((uint)(u8)(x0) | (uint)(u8)(x1) << 8 | (uint)(u8)(x2) << 16 | (uint)(u8)(x3) << 24)
  searchDB(M('1','2','3','4'))

И выглядит почти так же и о порядке следования байт гадать не приходится.

Цитата(Forger @ Jul 25 2018, 19:10) *
В таких ситуациях когда флэш очень толстая и камень имеет огромный запас производительности я задаю себе один простой вопрос: "а стоит ли овчинка выделки?" wink.gif

Такие ситуации обычно бывают при уровне задач, а ля "а не помигать ка мне светодиодом?". Имхо.
Во всех моих реальных проектах везде в обрез или памяти или быстродействия. А если не в обрез, то значит неправильно выбран МК и надо выбрать подешевле. laughing.gif
Go to the top of the page
 
+Quote Post
DASM
сообщение Jul 25 2018, 16:24
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



Цитата(Forger @ Jul 25 2018, 19:10) *
Сочувствую sad.gif Доделывать начатое за другими - мало кому по кайфу ...

В таких ситуациях когда флэш очень толстая и камень имеет огромный запас производительности я задаю себе один простой вопрос: "а стоит ли овчинка выделки?" wink.gif

Не, сочувствовать не надо. Я во всех чужих программах ищу и нахожу что то новое. Может через месяц я начну переделывать ее, но уже имея в багаже чужие трюки и подходы. Есть плохие места, есть интересные. Знания лишние не бывают.
Операционку он ucos юзал, не в восторге, но работает. Я хотел бы scmRTOS, но это потом. Кстати крутая программистка, которая тоже сидела над этим проектом за нее. Но увы, у девушек редко хорошо с железом,, поэтому с ней расстались. Хотя в плане академического программирования - все красиво и хорошо.
Go to the top of the page
 
+Quote Post
Arlleex
сообщение Jul 25 2018, 16:31
Сообщение #24


Местный
***

Группа: Участник
Сообщений: 492
Регистрация: 12-11-11
Пользователь №: 68 264



Цитата(jcxz @ Jul 25 2018, 19:19) *
Нормально делается и без strcmp:
Код
  #define M(x0,x1,x2,x3) ((uint)(u8)(x0) | (uint)(u8)(x1) << 8 | (uint)(u8)(x2) << 16 | (uint)(u8)(x3) << 24)
  searchDB(M('1','2','3','4'))

Зачем приводить к u8, а потом к uint?
Go to the top of the page
 
+Quote Post
Forger
сообщение Jul 25 2018, 16:33
Сообщение #25


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(DASM @ Jul 25 2018, 19:24) *
Не, сочувствовать не надо. Я во всех чужих программах ищу и нахожу что то новое.

Ну, если цель в этом, то другое дело sm.gif

Цитата
Операционку он ucos юзал, не в восторге, но работает. Я хотел бы scmRTOS, но это потом.

А не все ли равно? Особенно, если камень выбран с достаточным запасом.
К примеру, мои проекты уже давно лишены привязки к конкретной RTOS, менять ось - дело двух минут, хотя такой задачи изначально не ставилось.
Просто, свой код читать всегда проще и чем его больше в соотношении с чужим кодом, тем проще сопровождать такой проект. Имхо!

Цитата
Кстати крутая программистка .... поэтому с ней расстались.
Логично biggrin.gif


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
DASM
сообщение Jul 25 2018, 16:49
Сообщение #26


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



Цитата(Forger @ Jul 25 2018, 19:33) *
Ну, если цель в этом

проблема в собеседованиях. Давно были? Я не знаю, почему у проводящих их такие олимпиадные вопросы. По большому счету все что они спрашивают - никогда не надо. Причем язык С очень располагает к трюкам, оные я тоже не люблю. К счастью все это в прошлом, есть хорошая работа, где нужен результат, а не трюкачество
насчет двух минут смены горячитесь, у многих еще и менджер памяти свой, бывают тонкости
Go to the top of the page
 
+Quote Post
Forger
сообщение Jul 25 2018, 17:05
Сообщение #27


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(DASM @ Jul 25 2018, 19:49) *
проблема в собеседованиях. Давно были?

Всегда спрашиваю просто: наличие законченных проектов и куски кода оттуда для примера. Хотя бы это.
Остальные качества выясняются на испыт. сроке ))

Цитата
насчет двух минут смены горячитесь

Да, погорячился sm.gif На самом деле намного меньше: из списка доступных билдов нужно лишь выбрать нужный под нужную ОСь и пересобрать проект ))
Сам код не зависит от оси (простейшая "обертка").
Делалось с целью выяснить, какая ось шустрее и меньше жрет памяти.
Да и потом читать код с нормальными и более понятыми лично мне названиями функций-сервисов RTOS куда проще, чем разбираться со своим же кодом, вооружившись мануалом на ось )))

Цитата
, у многих еще и менджер памяти свой

В известных целях не использую дин. память, хотя свой менеджер есть, на базе известного TLSF.


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
DASM
сообщение Jul 25 2018, 17:41
Сообщение #28


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



Ни разу не видел еще готовый проект с кучей доступных билдов под разные ядра. Даже hello world не видел
Go to the top of the page
 
+Quote Post
Forger
сообщение Jul 25 2018, 17:45
Сообщение #29


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(DASM @ Jul 25 2018, 20:41) *
Ни разу не видел еще готовый проект с кучей доступных билдов под разные ядра.

Я тоже. А зачем это вообще делать?



--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
DASM
сообщение Jul 25 2018, 17:48
Сообщение #30


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



Цитата(Forger @ Jul 25 2018, 20:45) *
Я тоже. А зачем это вообще делать?

А как понять "из списка доступных билдов нужно лишь выбрать нужный под нужную ОСь и пересобрать проект"? Под ядро я имел в виду ось, ибо эмбеддерские это все же больше ядра просто, иногда с плюшками, не суть
Go to the top of the page
 
+Quote Post

6 страниц V  < 1 2 3 4 > » 
Closed TopicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th April 2024 - 08:56
Рейтинг@Mail.ru


Страница сгенерированна за 0.01509 секунд с 7
ELECTRONIX ©2004-2016