Opened 5 years ago
Closed 5 years ago
#109 closed ожидается проверка (задача сдана)
WW #2
Reported by: | Alexander Morozov | Owned by: | Sokolov Viacheslav |
---|---|---|---|
Component: | WW_strings | Version: | 2.0 |
Keywords: | Cc: |
Description
Change History (4)
comment:1 Changed 5 years ago by
comment:2 Changed 5 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
comment:3 Changed 5 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 1.0 → 2.0 |
Как ни странно, под gcc в macos проект собирался. Поменял на define, как предлагали на stackoverflow, потому что сложно создать глобальный массив с размером равным возвращаемому значению функции.
comment:4 Changed 5 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
Note: See
TracTickets for help on using
tickets.
Под linux проект не собирается. (И не должен по стандарту языка Си).
Проблема описана, например, здесь: https://stackoverflow.com/a/3025106
Есть такой вариант решения: использовать не константы, а функции, возвращаюшие константы. Этот вариант полезен и в языке C++ для решения проблемы порядка инициализации статических объектов.
Напоминаю про различие между void f() и void f(void).
Нет проверки предусловий, желательно добавить assert-ы на соблюдение контрактов функций.
Желательно отделять контексты (например, разные функции) друг от друга пустыми строчками, это улучшает читаемость.
Желательно не экономить на названиях. s, s1, s2 - это ОК в контексте абстрактных имен для однотипных функций по работе над строками, а вот beg - плохо: читатель должен додумывать, что именно имеется в виду. Лучше именовать result, что сразу снимает все вопросы. Еще лучше - char * const result = s1
Обращаю внимание, что каждый из вызовов malloc может завершиться неудачей. Пользователь автотеста ожидает от него следующего поведения: если тест упал, значит, реализация функций my_* некорректная (что неверно). Было бы неплохо гарантировать это. Этого можно достичь разными способами, в том числе не использовать динамическую аллокацию. В данном случае это, разумеется, не играет большого значения, потому что такое событие маловероятно, но это не значит, что на это не нужно обращать внимания.
Ключевое - именование переменных и функций.