Многие стандартные функции C и POSIX возвращают -1
в случае ошибки и 0
в случае успеха, например truncate
, fflush
, msync
и т. Д.
int ret = truncate("/some/file", 42);
Лучше всего проверять успешность с помощью ret! = -1
или ret = = 0
, и почему?
По моему опыту, большинство людей проверяют случай ошибки ( ret! = -1
), поскольку обычно существует только один (рассмотрим функции, возвращающие NULL
или EOF
в случае ошибки). Однако, оглядываясь назад, можно было увидеть, что этим функциям может быть полезно возвращать errno
напрямую (где 0
не считается ошибкой).
Также существует беспокойство, что функция возвращает что-то другое. чем 0
или -1
, или что дополнительные возвращаемые значения добавляются позже. В этих сценариях имеет смысл проверить "самый узкий" диапазон значений, указывающих на успех ( ret == 0
).
Я предполагаю, что люди знают, что EOF
обычно определяется как -1
.