zHz00 Untitled

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

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

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

ОКАЗАЛОСЬ

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

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

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

URL
Ето штуки тоже занятные, так как периодически разговарива...
И раз уж я сегодня такой плодовитый на записи в "дне...
Вэсна прышоль - лубит приньос! Всем девушкам гарнизо...
Они меня просто преследуют! Попробуйте вообразить картинк...
Доели лося, который вчера подошел к нашему костру погреть...
Принимал роды у белок. Отдавал роды белок куницам. Пыталс...

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
Добавить комментарий

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

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