zHz00 Untitled

среда, 14 сентября 2016
23:56 Подменыши
Жила-была переменная fTime. Она указывала на текущее время. Жила-была другая переменная -- fTime0. Она указывала на момент начала некоего процесса.

И ещё была длинная функция, в которой они обе жили.

Я смотрю на разницу в начале функции -- там всё ок. Вывожу её на экран на всякий случай.
Я смотрю на разницу в конце функции -- а там она другая! Этого быть не может, т.к. fTime0 в течение функции не меняется, а fTime обновляется только в начале цикла (большая часть функции -- тело цикла).

ОКАЗАЛОСЬ

что ближе к концу функции был вложенный цикл. И там была об'явлена ДРУГАЯ переменная fTime. По другому поводу и, ясное дело, с совершенно другим значением. Она перекрыла предыдущую без предупреждения. А вторую проверку я проводил как раз во вложенном цикле.

Си -- опасный язык.

@темы: Программирование

URL
Да, если кто не знает ещё... В Краснодаре есть служба т...
Раз уж начал рыться в записной книжке своего мобильника, ...
Ты кажешься ребенком Тихим, милым... Но за твоими Хруп...
Вот тебе и зае*ись!.. Кстати, следующим папой римски...
Оказывается и такой ресурс есть! http://www.popa.ru ...
Зацените! http://yellow.spider.ru/gloom/saas.gif

15.09.2016 в 08:26

15.09.2016 в 08:26
вот за это я простынки и не люблю.
URL

16.09.2016 в 01:13

16.09.2016 в 01:13
Да, надо от них избавляться, конечно, но умещать каждую функцию на один экран, как велят многие пособия, довольно проблематично. Функция, с которой я имел дело, занимает около 10 экранов. Из неё вызываются штук 20 других функций (в зависимости от разных условий -- те или другие из имеющегося набора). Каждая из этих 20 тоже экранов по 10.
URL

16.09.2016 в 18:14

16.09.2016 в 18:14
А почему это проблематично? Тяжело выбрать правильную абстракцию с правильным именем, чтобы упаковать и нехай компилятор сам инлайнит? Или это большие из-за того, что кода очень много и страшно что-то трогать из-за большой связности?
URL

16.09.2016 в 19:13

16.09.2016 в 19:13
Что-то в последние дни часто стали случаться дабл и трипл посты.

Больше второе -- делать рефакторинг спагетти нудно, страшно и опасно (а спагетти он был ещё до меня). С абстракциями, конечно, тоже проблемы, т.к. весь процесс делится на эн этапов, и эти этапы уже выделены в функции. А вот найти подэтапы внутри этапов уже сложно. А даже если это сделать, то они используют общие данные, а значит придётся либо всё передавать через параметры, либо все локальные переменные делать членами класса, в котором расположены все вышеописанные функции. Но последнее -- это опять проблемы связности.
URL

22.09.2016 в 12:27

22.09.2016 в 12:27


-- Minoru
URL

22.09.2016 в 13:48

22.09.2016 в 13:48
Это для какого компилятора?
URL

22.09.2016 в 13:52

22.09.2016 в 13:52
Для GCC. Clang, скорее всего, тоже её принимает. Ну, а у Микрософтовского компилятора должен бы быть аналог.

-- Minoru
URL
Добавить комментарий

Расширенная форма

Подписаться на новые комментарии