The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

14.04.2016 16:14  Разбор типичных ошибок при разработке на С/С++

Андрей Карпов, специализирующийся на системах статического анализа кода, опубликовал практические рекомендации по программированию на языках С/С++, основанные на ошибках, выявленных при проверке различных открытых проектов. В большинстве своем советы универсальны и будут интересны программистам, использующим и другие языки. Каждая рекомендация сопровождается практическим примером с разъяснением.

  1. Главная ссылка к новости (http://www.viva64.com/ru/b/039...)
Автор новости: el_programmer
Тип: яз. русский / Практикум
Ключевые слова: gcc, lang, bug
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Линейный вид | Ajax | Показать все | RSS
 
  • 1.1, евнрвпвапр, 09:54, 15/04/2016 [ответить] [смотреть все]
  • +/
    Спасибо, побольше бы здесь подобных статей
     
     
  • 2.65, Аноним, 03:54, 16/04/2016 [^] [ответить] [смотреть все] [показать ветку]
  • +/
    Статья на opennet информативна наредкость И объёмна в одинаковой с информатив... весь текст скрыт [показать] [показать ветку]
     
  • 1.2, Аноним, 09:57, 15/04/2016 [ответить] [смотреть все]  
  • –1 +/
    Не стал читать, текста много #sidebar мешает, выложите в markdown на 100%
     
     
  • 2.7, Анаон, 10:13, 15/04/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • –4 +/
    Включи в фарфоксе "Режим чтения" и ничего не помешает.
     
     
  • 3.15, Аноним, 11:04, 15/04/2016 [^] [ответить] [смотреть все]  
  • +/
    От этого он типографику не дорисует.
     
  • 1.4, Модификатор, 10:06, 15/04/2016 [ответить] [смотреть все]  
  • –12 +/
    Что это На каком это языке написано Кто на ком стоял Предостеречь можно чел... весь текст скрыт [показать]
     
     
  • 2.6, Аноним, 10:12, 15/04/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +3 +/
    А по поводу статьи что скажешь?
     
     
  • 3.8, А, 10:20, 15/04/2016 [^] [ответить] [смотреть все]  
  • +9 +/
    Реклама PVS-Studio :)
     
     
  • 4.23, OramahMaalhur, 11:37, 15/04/2016 [^] [ответить] [смотреть все]  
  • +15 +/
    Если бы вся реклама была такой полезной и информативной, я бы удалил uBlock...
     
  • 3.17, Модификатор, 11:11, 15/04/2016 [^] [ответить] [смотреть все]  
  • +6 +/
    > А по поводу статьи что скажешь?

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

    Но вот с формой подачи этого материала и примерами уже неоднозначно.
    Статья интересная, но местами противоречивая.
    Автор хоть и берёт примеры кода из открытых проектов, всё повествование строит вокруг Windows,  Visual Studio, WinAPI и т.п.
    Полезное там, несомненно, есть, но далеко не для всей аудитории опеннета.

    Ну и часть примеров разобранных ошибок представляет собой "не опечатывайтесь в коде", "проверяйте код после копипасты", "пишите код внимательно и внимательно его перечитывайте", "форматируйте код таблчино, так его удобно читать и легче увидеть ошибки" и т.п.
    При этом автор сам опечатывается в тексте статьи.("результат работы функции memcmp() нельзя пометить в переменную"), пропускает знаки препинания, путает тире с дефисом, неправильно применяет падежи.

    Всё это в итоге вызывает ощущение, что начало и задумка были отличными, но для увеличения объёма статьи туда навставляли пачку странных примеров от КО.
    Поэтому и целевая аудитория статьи становится размытой и непонятной.

    Ежели статью поделить на две части "для тех, кто пишет первое Hello, World" и "для более  опытных", причесать форму подачи и исправить безграмотность текста, будет совсем отлично.
    Автору желаю успехов и совершенствования.

     
     
  • 4.20, тоже Аноним, 11:19, 15/04/2016 [^] [ответить] [смотреть все]  
  • +/
    Автор просто не может брать примеры кода из проприетарных проектов, хотя именно ... весь текст скрыт [показать]
     
     
  • 5.22, Модификатор, 11:33, 15/04/2016 [^] [ответить] [смотреть все]  
  • +1 +/
    В таком случае у многих может возникнуть недоумение и вопрос А при чём здесь, с... весь текст скрыт [показать]
     
     
  • 6.27, тоже Аноним, 13:39, 15/04/2016 [^] [ответить] [смотреть все]  
  • +/
    Да, к сожалению, думать шире одной мысли многие не умеют Но это их проблема, а ... весь текст скрыт [показать]
     
  • 6.34, Crazy Alex, 15:05, 15/04/2016 [^] [ответить] [смотреть все]  
  • –2 +/
    Да нет никких вопросов Опеннет - возможность для этого хрена лишний раз пропиар... весь текст скрыт [показать]
     
  • 2.52, Ilya Indigo, 19:52, 15/04/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • –2 +/
    Вы сами-то на каких языках читаете и пишете Судя по вашему комментарию, эти язы... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.57, Аноним, 20:55, 15/04/2016 [^] [ответить] [смотреть все]  
  • +1 +/
    "не один" -> "ни один"
     
  • 3.86, Модификатор, 13:31, 18/04/2016 [^] [ответить] [смотреть все]  
  • +1 +/
    И что же именно в моём комментарии позволяет Вам, любезный, делать такие выводы ... весь текст скрыт [показать]
     
  • 1.5, Онанимус, 10:10, 15/04/2016 [ответить] [смотреть все]  
  • +/
    Спасибо.
     
     
  • 2.79, Аноним, 00:46, 17/04/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • –1 +/
    > Спасибо.

    Пожалуйста. По существу есть что вякнуть?

     
  • 1.10, Архроним, 10:43, 15/04/2016 [ответить] [смотреть все]  
  • +/
    Причина разбора и допущения большинства ошибок в коротких названиях И неоднозначных сокращениях переменных от которых рябит в глазах. Надо называть например: =  ostatochnStoimostOsnSredstv.
     
     
  • 2.11, Jock Tanner, 10:49, 15/04/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +3 +/
    Надо называть FixedAssets->ResidualValue. Транслит в топку.
     
     
  • 3.12, Архроним, 10:49, 15/04/2016 [^] [ответить] [смотреть все]  
  • –1 +/
    Ну да или так.
     
  • 3.18, Philosonimus, 11:11, 15/04/2016 [^] [ответить] [смотреть все]  
  • +/
    Кстати, а как перевести на англ. аббревиатуру - СНИЛС? inia?
     
     
  • 4.21, Jock Tanner, 11:23, 15/04/2016 [^] [ответить] [смотреть все]  
  • +3 +/
    В США есть SSN Social Security Number , но это не перевод, а примерный аналог С... весь текст скрыт [показать]
     
  • 2.13, А, 10:51, 15/04/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    Вам бы романы писать, а не код :)
     
  • 2.14, я, 10:55, 15/04/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • –1 +/
    нет, не так. ostatochnayaStoimostOS ))
     
  • 1.26, Crazy Alex, 13:28, 15/04/2016 [ответить] [смотреть все]  
  • –1 +/
    Откуда восторг? кто-то нашёл в статье хоть что-то новое? Убогая реклама, как она есть.
     
     
  • 2.28, тоже Аноним, 13:45, 15/04/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +2 +/
    Вопрос, видимо, предполагался как риторический А зря Кстати, вам, возможно, ин... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.35, Crazy Alex, 15:06, 15/04/2016 [^] [ответить] [смотреть все]  
  • +/
    Так ни строчки же того, что не пишется в учебниках Ни одного оригинального прим... весь текст скрыт [показать]
     
     
  • 4.38, тоже Аноним, 15:14, 15/04/2016 [^] [ответить] [смотреть все]  
  • +/
    Название учебника, в котором описан, скажем, пример 8470 5 - в студию, пожалу... весь текст скрыт [показать]
     
     
  • 5.42, Crazy Alex, 16:04, 15/04/2016 [^] [ответить] [смотреть все]  
  • +/
    Вопрос не ко мне - я под винду не пишу И, кстати, ладно статьи - но документаци... весь текст скрыт [показать]
     
     
  • 6.44, тоже Аноним, 17:08, 15/04/2016 [^] [ответить] [смотреть все]  
  • –1 +/
    Напрашивается вопрос к вам а что ж вы тогда так безапелляционно заявляете о том... весь текст скрыт [показать]
     
     
  • 7.46, cmp, 18:32, 15/04/2016 [^] [ответить] [смотреть все]  
  • +/
    Никогда в жизни не возникало ситуции, когда бы memcmp сравнивалось с -1 или 1, э... весь текст скрыт [показать]
     
     
  • 8.61, тоже Аноним, 23:49, 15/04/2016 [^] [ответить] [смотреть все]  
  • +1 +/
    Ну вот, еще один специалист знает предмет лучше автора, но при этом почему-то тр... весь текст скрыт [показать]
     
     
  • 9.66, Аноним, 04:08, 16/04/2016 [^] [ответить] [смотреть все]  
  • +/
    Не исключаю, что он и впрямь может так написать Вот только зачем ему писать ста... весь текст скрыт [показать]
     
     
  • 10.67, тоже Аноним, 10:05, 16/04/2016 [^] [ответить] [смотреть все]  
  • +/
    Не исключаю, что он на этом заработал свой первый миллион Вот только нам с вами... весь текст скрыт [показать]
     
     
  • 11.81, Аноним, 00:48, 17/04/2016 [^] [ответить] [смотреть все]  
  • –1 +/
    Сомневаюсь, что хоть кто-то из вас, включая его, в теме, как зарабатывается милл... весь текст скрыт [показать]
     
  • 9.71, cmp, 11:22, 16/04/2016 [^] [ответить] [смотреть все]  
  • +/
    Есть вопросы по теме, или сказать больше нечего
     
  • 2.29, iPony, 13:51, 15/04/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Ага Стыдно, но вообще не знал про nullptr Надо почитать про эти ваги модные c ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.36, Crazy Alex, 15:09, 15/04/2016 [^] [ответить] [смотреть все]  
  • +/
    На плюсах пишете и до сих пор не прочли о новинках C 11 Ну да, таки надо поч... весь текст скрыт [показать]
     
  • 3.58, Аноним, 21:00, 15/04/2016 [^] [ответить] [смотреть все]  
  • +/
    Тогда уж сразу читайте и про C 14, он, по сути, дополняет С 11 А то скоро буд... весь текст скрыт [показать]
     
  • 3.87, Анонимный Алкоголик, 20:14, 18/04/2016 [^] [ответить] [смотреть все]  
  • –1 +/
    Он мягко выражаясь не нужен ... весь текст скрыт [показать]
     
     
  • 4.88, Анонимный Алкоголик, 20:29, 18/04/2016 [^] [ответить] [смотреть все]  
  • +/
    nullptr не нужен История берёт начало с того, как в 90х дебилята внесли в док... весь текст скрыт [показать]
     
  • 2.85, angra, 08:21, 17/04/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • –1 +/
    Это ты так пытался прорекламировать свои безграничные познания и непогрешимость ... весь текст скрыт [показать] [показать ветку]
     
  • 1.30, Crazy Alex, 14:04, 15/04/2016 [ответить] [смотреть все]  
  • –4 +/
    Кстати, в п 39 автор написал полный бред, не отличив логический 124 от битово... весь текст скрыт [показать]
     
     
  • 2.31, тоже Аноним, 14:14, 15/04/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +4 +/
    Вы в данном случае себя имеете в виду Логический 124 выглядит примерно так ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.33, Crazy Alex, 15:03, 15/04/2016 [^] [ответить] [смотреть все]  
  • –5 +/
    Какая разница, нуль или нет Допустим, для каких-то других случаев база была бы ... весь текст скрыт [показать]
     
     
  • 4.37, тоже Аноним, 15:12, 15/04/2016 [^] [ответить] [смотреть все]  
  • +3 +/
    Зато вы, видимо, пишете на Сях так долго, что уже не помните разницы между 124... весь текст скрыт [показать]
     
     
  • 5.41, Crazy Alex, 16:02, 15/04/2016 [^] [ответить] [смотреть все]  
  • –3 +/
    Блин, протупил Да, забыты скобки, и разные виды or здесь не важны P S Впроче... весь текст скрыт [показать]
     
     
  • 6.50, ы, 18:58, 15/04/2016 [^] [ответить] [смотреть все]  
  • +/
    они совершенно бесплатно проверяют открытые проекты
     
     
  • 7.56, Led, 20:52, 15/04/2016 [^] [ответить] [смотреть все]  
  • –3 +/
    они используют открытые проекты для совершенно бесплатной навязчивой рекламы f... весь текст скрыт [показать]
     
     
  • 8.62, тоже Аноним, 23:51, 15/04/2016 [^] [ответить] [смотреть все]  
  • +/
    Навязчивой Вам тоже стоит хотя бы временно выключить АдБлок и откалибровать сво... весь текст скрыт [показать]
     
  • 6.51, Аноним, 19:06, 15/04/2016 [^] [ответить] [смотреть все]  
  • –1 +/
    мужик - ты наконец ответишь за свои слова Ты говорил что на P970 есть новый анд... весь текст скрыт [показать]
     
  • 1.32, Genby, 14:54, 15/04/2016 [ответить] [смотреть все]  
  • –3 +/
    надо было писать на Ada Go Rust Python Pascal... весь текст скрыт [показать]
     
     
  • 2.59, Аноним, 21:03, 15/04/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Ага, а лучше на всём этом сразу и получить типичные ошибки Ada Go Rust Python P... весь текст скрыт [показать] [показать ветку]
     
  • 1.43, DmA, 16:25, 15/04/2016 [ответить] [смотреть все]  
  • +/
    серьёзные разработчики думаю давно используют анализаторы.Другое дело, что закрытый код анализатора автора статьи  вдруг не проверен статическим анализатором или автор прогнал программу в обратную сторону -чтобы насажать всевозможных ошибок. В любом случае, если есть боязнь,что код утечёт  в Интернет и этим навредит программисту  лучше разрабатывать на компьютере не подключенному к сети, а то такой анализатор или компилятор вылетил с ошибкой, а потом отошлёт весь дамп системы со всем кодом куда-нибудь в Интернет...
     
  • 1.53, arka, 20:40, 15/04/2016 [ответить] [смотреть все]  
  • –1 +/
    >[оверквотинг удален]
    >
    > static int rr_cmp(uchar *a,uchar *b)
    > {
    >   for (size_t i = 0; i < 7; ++i)
    >   {
    >     if (a[i] != b[i])
    >       return a[i] - b[i];
    >   }
    >   return a[7] - b[7];
    > }

    И имеем магическую циферку 7. У нас на Юпитере sizeof(uchar) == 46, после этого расхотелось читать дальше.

     
     
  • 2.54, arka, 20:44, 15/04/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Тьфу ты, сорри, пятница внесла в голову сумбур - дело было не в битах, а массив... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.60, ы, 23:00, 15/04/2016 [^] [ответить] [смотреть все]  
  • +1 +/
    вас, юпитериацев, не понять...
     
  • 1.63, Аноним, 00:41, 16/04/2016 [ответить] [смотреть все]  
  • –1 +/
    Спасибо автору Почитал, подумал, отвёл душу Хорошо что я не один на этом свете... весь текст скрыт [показать]
     
  • 1.64, Аноним, 02:35, 16/04/2016 [ответить] [смотреть все]  
  • +3 +/
    Какой ужасный пиар, какие ужасные боты в комментариях.
     
     
  • 2.68, тоже Аноним, 10:10, 16/04/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Да ничего ужасного, на самом деле Просто они были по-пятничному расслаблены и и... весь текст скрыт [показать] [показать ветку]
     
  • 1.69, Аноним, 10:43, 16/04/2016 [ответить] [смотреть все]  
  • +1 +/
    Автору и создателю PVS. Когда и почему будет открыт код продукта?
     
     
  • 2.70, Аноним, 10:54, 16/04/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    И да, спасибо за хорошую статью!
     
  • 1.72, Аноним, 15:03, 16/04/2016 [ответить] [смотреть все]  
  • +1 +/
    Просмотрел наискось, и то, только половину осилил На правах рекламы некоего PVS... весь текст скрыт [показать]
     
     
  • 2.73, тоже Аноним, 15:35, 16/04/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    Там перед примерами - названия этих самых маленьких Временами довольно извест... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.74, Злюка, 16:18, 16/04/2016 [^] [ответить] [смотреть все]  
  • +2 +/
    Такую бы энернию, да на пользу людям 10 минут не проходит без оправдания, на лю... весь текст скрыт [показать]
     
     
  • 4.77, тоже Аноним, 20:44, 16/04/2016 [^] [ответить] [смотреть все]  
  • +/
    Приятно наконец пообщаться с культурным человеком Может быть, вы еще и подберет... весь текст скрыт [показать]
     
  • 4.89, Аноним, 21:35, 18/04/2016 [^] [ответить] [смотреть все]  
  • +/
    Эти ребята регулярно проходятся по открытым проектам, сообщая разработчикам о на... весь текст скрыт [показать]
     
  • 3.75, Аноним, 18:35, 16/04/2016 [^] [ответить] [смотреть все]  
  • –1 +/
    Согласен Однако, еще труднее найти ошибку, основанную на непонимании или незнан... весь текст скрыт [показать]
     
     
  • 4.76, тоже Аноним, 20:40, 16/04/2016 [^] [ответить] [смотреть все]  
  • +1 +/
    Дело в том, что как раз архитектурные особенности, работу с вещественными числам... весь текст скрыт [показать]
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor