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
Type: | ожидается проверка → ожидаются исправления |
---|
comment:2 Changed 5 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 1.0 → 2.0 |
comment:3 Changed 5 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
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.
Цель 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, корректно реализующих поведение функции, описанное в Стандарте. Тесты не должны тестировать реализацию, они должны проверять соответствие реального поведения требуемому.