|
|
  |
как писать на С в 2016 году |
|
|
|
Jan 25 2016, 18:31
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Ну, одну пользу я уже извлек - char нужно произносить как "кар", в словаре посмотрел произношение character.  Еще одна - #pragma once void processAddBytesOverflow(void *input, uint32_t len) { ... вместо void processAddBytesOverflow(uint8_t *bytes, uint32_t len) { - не знаю, насколько это правильно, но на заметку можно взять
|
|
|
|
|
Jan 25 2016, 19:59
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(ViKo @ Jan 25 2016, 20:31)  void processAddBytesOverflow(void *input, uint32_t len) { ... вместо void processAddBytesOverflow(uint8_t *bytes, uint32_t len) { - не знаю, насколько это правильно, но на заметку можно взять Не знаю что там делает processAddBytesOverflow, а вот send(void const *from, size_t len) или receive(void *to, size_t len) или dump(void const *from, size_t len) очень удобно: Код uint8_t A; uint32_t B; struct { uint32_t Aa; ..... } C; uint16_t D[8]; ... dump(&A, sizeof(A)); dump(&B, sizeof(B)); dump(&C, sizeof(C)); dump(&D, sizeof(D));
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Jan 25 2016, 20:26
|

Местный
  
Группа: Свой
Сообщений: 232
Регистрация: 13-03-12
Из: Украина
Пользователь №: 70 785

|
господа программисты, прокомментируйте пожалуста вот это явление - стандарт безопасного написания кода https://www.securecoding.cert.org/confluenc...Coding+Standardзачем оно нужно, где применяется? я имею в виду это для embed, под винду, веб или в принципе для чего угодно? может так надо писать коды в 2016? =)
--------------------
нет повести печальнее на свете, чем повесть о запавшем ресете
|
|
|
|
|
Jan 26 2016, 07:01
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(Hexel @ Jan 25 2016, 23:26)  прокомментируйте пожалуста вот это явление Пожалуйста. Первое же требование к препроцессору, указывать оба варианта #ifdef / #else абсолютно по делу. Самый простой пусть избежать отправки заказчику прошивки с выключенным WDT, это указать #else #warning "WDT off!" #endif
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Jan 26 2016, 08:36
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(Hexel @ Jan 25 2016, 22:26)  прокомментируйте пожалуста вот это явление - стандарт безопасного написания кода https://www.securecoding.cert.org/confluenc...Coding+Standardзачем оно нужно, где применяется? Почитал несколько пунктов. Все оказались из серии "не сушите кошек в микроволновке". Да, все они пишут правильно и именно так и надо делать, но разве кто-то делает иначе?
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Jan 26 2016, 09:45
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(Сергей Борщ @ Jan 26 2016, 11:36)  разве кто-то делает иначе? Увы, и это ужас ужасный. Мне приходится много работать с чужими проектами. За месяцы! не удается выправить то состояния, пригодного для комфортного сопровождения и развития. И проекты сложный, чтобы переписать все. Насколько я понимаю, вы работаете один. Повезло.
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Jan 26 2016, 10:04
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (Сергей Борщ @ Jan 26 2016, 10:36)  Почитал несколько пунктов. Все оказались из серии "не сушите кошек в микроволновке". Да, все они пишут правильно и именно так и надо делать, но разве кто-то делает иначе? Присоединюсь к Dog Pawlowa уровень мусора зашкаливает. Я тоже имею очень много дел с чужими проектами, причем это как бы не типичный мусор из интернету, а коммерческие вещи писанные американцами-австралийцами-юаровцами-канадцами-немцами. Среди фамилий авторов я даже индийских не встречал, хотя каких-то славян, китайцев, пакистанцев этих да, есть. Прилично пишут только немцы. Самый беспредел это ЮАР. Но и остальные не далеко ушли. Типична дивная помесь вдолбленных за период обучения вполне из себя правильных приемов программирования, какой то дикой безмозголой отсебятины и белых ниток которыми все это шито.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jan 26 2016, 10:21
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (AlexandrY @ Jan 26 2016, 12:08)  Настоящему программисту должно быть вообще без разницы как написан код, достаточно только гарантий что он рабочий. То, что Вы написали, означает, что Вы не программист, а конечный потребитель или сшиватель белыми нитками - работает и ладно. Перед программистами сталкивающимися с чужим кодом стоит задача не использовать его, а исправить, поскольку он НЕ рабочий, или изменить, поскольку изменяется функциональность.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jan 26 2016, 13:35
|

Профессионал
    
Группа: Свой
Сообщений: 1 292
Регистрация: 26-06-07
Пользователь №: 28 718

|
Цитата NULL vs Nil nullptr ) Цитата когда носители английского между собой будут Москву называть Москвой, вот тогда я буду говорить "форд мастэнг". Сейчас же я, говоря по-русски, использую русские правила транскрипции. + к тому же некоторые почему то забыли, что в английском и в его деривативе нет вообще ни буквы эр, ни звука эр.
|
|
|
|
|
Jan 26 2016, 14:10
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(menzoda @ Jan 26 2016, 15:54)  Ну вы нашли о чем спорить! Чар или кар! Давайте лучше советы по собственно языку обсуждать. Да сколько угодно. Вот возьмем CMSIS OS, которую упорно продвигает ARM Любители Keil RTX скоро должны обнаружить, что она не поддерживается на Cortex-M7 И всем массово надо будет переходить на CMSIS OS Так вот там повсеместно используют конструкции типа Код #define osSemaphoreDef(name) \ uint32_t os_semaphore_cb_##name[2] = { 0 }; \ const osSemaphoreDef_t os_semaphore_def_##name = { (os_semaphore_cb_##name) } #endif Вот мой совет на все времена: никогда не применять эту вот фигню - ## Из-за нее не работает нормально рефакторинг, появляются скрытые имена, затрудняется отладка. И все из-за того чтобы скрыть дополнительное объявление одной переменной от юзера. Это в опенсорсе то! И вообще языки должны делится на корпоративные и индивидуальные, а не на высшие и низшие или отраслевые ( для WEB-а, для сенсоров, для ракет и т.д.)
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|