Стандартные функции C: Проверить на -1 или 0?

Многие стандартные функции 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 ).

Update0

Я предполагаю, что люди знают, что EOF обычно определяется как -1 .

5
задан Matt Joiner 1 October 2010 в 15:45
поделиться