Opened 5 years ago

Closed 5 years ago

#149 closed ожидается проверка (задача сдана)

WW #2

Reported by: Vavilov Mark Owned by: Sokolov Viacheslav
Component: WW_strings Version: 2.0
Keywords: Cc:

Description


Change History (3)

comment:1 Changed 5 years ago by Sokolov Viacheslav

Type: ожидается проверкаожидаются исправления

Цель lab_02 некорректно помечена, как .PHONY, а цель all, напротив, не помечена.

restrict - ключевое слово языка Си, которое будет распознано любым компилятором. restrict - compiler-specific type qualifier, что накладывает ненужное ограничение на использование кодовой базы.

Напоминаю про разницу между void() и void(void).

Возможно, стиль while (*s++) { более читаемый.

Реализации функций my_strcpy и my_strcmp некорректные: они делают не то, что описано в Стандарте.

Лучше не смешивать стиль с табуляциями и стиль с пробелами в рамках одного проекта (а не только одного файла).

Обращаю внимание, что malloc может вернуть NULL, что влияет на (формальную) корректность программы.

Предлагаю добавить такие тесты, на которых будет проверяться некорректность текущих реализаций.

assert (strcmp(s1,s) == my_strcmp(s2,s)); - это условие может не выполняться для функций strcmp, my_strcmp, корректно реализующих поведение функции, описанное в Стандарте. Тесты не должны тестировать реализацию, они должны проверять соответствие реального поведения требуемому.

comment:2 Changed 5 years ago by Vavilov Mark

Type: ожидаются исправленияожидается проверка
Version: 1.02.0

comment:3 Changed 5 years ago by Sokolov Viacheslav

Resolution: задача сдана
Status: assignedclosed
size_t my_strlen(const char *s){
    int len = 0;
    while (*s++) {
        len++;
    }
    return len;
}

здесь Undefined Behaviour: переполнение знакового целового. Произойдет на Очень Длинной Строке.

Код тестов можно было бы декомпозировать лучше.

Не проверяется возвращаемое значение: функция может вернуть не первый элемент, как того требует стандарт.

В заголовочных файлах есть включения, которым там не место: для декларации функции "assert.h" не нужен.

Note: See TracTickets for help on using tickets.