Opened 5 years ago
Closed 5 years ago
#178 closed ожидается проверка (задача сдана)
WW #3
Reported by: | Alexander Morozov | Owned by: | Sokolov Viacheslav |
---|---|---|---|
Component: | WW_intrusive_list | Version: | 3.0 |
Keywords: | Cc: |
Description
Change History (6)
comment:1 Changed 5 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
comment:2 Changed 5 years ago by
Вроде бы все исправил. Мотивации в такой сигнатуре не было, я почему-то подумал, что в задании хотят, чтобы было так. Возможно, потому что я сначала подумал, что список мы храним по значению, а не по указателю. Не понял, что такое release-конфигурация, поэтому добавил -DDEBUG в параметры командной строки и делаю медленную проверку на то, есть ли в списке удаляемая вершина только под дебагом.
comment:3 Changed 5 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 1.0 → 2.0 |
comment:4 Changed 5 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
release режим сборки:
-DNDEBUG (вырезаются все ассерты) -O3 (или его аналог - наиболее агрессивная оптимизация) и, возможно -flto (оптимизация на этапе компоновки).
Ключевое - удаление assert-ов.
init_list: не хватает проверки на not null
Стоит вынести проверку принадлежности точки списку в отдельную функцию contains(list, node), убрать #ifdef DEBUG, оставить assert(contains(list, node)), добавить в add_node assert(not contains(list, node)).
Сейчас программа не работает на тестовом примере (зависает). Стоит тестировать перед отправкой. (Несложно же! ./lab_03 < example.txt
Сила привычки!)
comment:5 Changed 5 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 2.0 → 3.0 |
comment:6 Changed 5 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
contains: не хватает проверки на not null
в add_node и remove_node можно было бы добавить проверку пост-условия (not contains и contains соответственно)
obj/main.o: src/main.c
еще отinclude/clist.h
есть зависимость. Если поменять заголовочный файл, main не пересоберется, что может быть проблемой.Насчет gnu extensions написал (косвенно) в правилах https://wiki.compscicenter.ru/index.php/C%2B%2B_1MIT_осень_1_2019 : использовать знание о целевой платформе желательно только в Makefile, а код писать в соответствии со Стандартом.
Не хватает проверки соблюдения контрактов (в обоих .c файлах):
Я бы предпочел видеть именование не lst и nd, а list и node. В чем выигрыш от сокращения?
Like за функцию get_cont; но имя я бы поменял: get_cont -> get_corresponding_point, например.
Есть какая-то мотивация в сигнатуре
struct intrusive_list *add_point
, а неvoid add_point
?