LINUX.ORG.RU

История изменений

Исправление liksys, (текущая версия) :

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

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

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

Итого, это просто приемы из опыта, чтобы не делать ошибок. Best practice, как говорится. Интересно, что ты почему-то этого не понял, хотя видел макрос US_SNPRINTF, параноидальные ассерты на каждый чих, запрет на сборку без NDEBUG, const *const, вложенные блоки {} для ограничения скоупов и прочее.

С этим разобрались. Что-то еще? Не стесняйся, если ты готов вести цивилизованную дискуссию, я с радостью поделюсь с тобой опытом. Если сомневаешься в его эффективности, можешь запустить valgrind ./ustreamer и посмотреть на предмет утечек или ошибок памяти.

Исправление liksys, :

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

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

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

Итого, это просто приемы из опыта, чтобы не делать ошибок. Best practice, как говорится. Интересно, что ты почему-то этого не понял, хотя видел макрос US_SNPRINTF, параноидальные ассерты на каждый чих, запрет на сборку без NDEBUG, const *const, вложенные блоки {} для ограничения скоупов и прочее.

С этим разобрались. Что-то еще? Не стесняйся, если ты готов вести цивилизованную дискуссию, я с радостью поделюсь с тобой опытом. Если сомневаешься в его эффективности, можешь запустить valgrind ./ustreamer и посмотреть на предмет утечек или ошибок памяти.

Исходная версия liksys, :

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

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

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

Итого, это просто приемы из опыта, чтобы не делать ошибок. Best practice, как говорится. Интересно, что ты почему-то этого не понял, хотя видел макрос US_SNPRINTF, параноидальные ассерты на каждый чих, запрет на сборку без NDEBUG, const *const, вложенные блоки {} для ограничения скоупов и прочее.

С этим разобрались. Что-то еще? Не стесняйся, если ты готов вести цивилизованную дискуссию, я с радостью поделюсь с тобой опытом. Если сомневаешься в его эффективности, можешь запустить valgrind ./ustreamer и посмотреть на предмет утечек или ошибок памяти.