Я часто вижу код, который проверяет наличие ошибок из функций POSIX, тестируя меньше нуля вместо явно определенных и обычно используется только код ошибки -1. Это
ret = function();
if (ret < 0) {
...
}
против
ret = function();
if (ret == -1) {
...
}
Есть ли какая-то цель для первой практики? Сравнение с 0 быстрее, чем сравнение с -1 на некоторых архитектурах? Означает ли стандарт C или POSIX какие-либо гарантии того, что первая альтернатива не будет нарушаться в будущем, если единственный код ошибки, указанный сейчас, равен -1? Если нет, следует ли считать это плохой практикой или нет? (Думаю, маловероятно, что большинство функций изменится таким образом, что может привести к нарушению много уже написанного кода?).
EDIT: чтобы сделать вопрос более ясным: я говорю только о функциях, которые исключительно возвращают -1 в качестве кода ошибки, как определено стандартом. Я знаю, что есть такие, которых нет. Я видел, 0 проверяйте эти функции во многих местах вместо == -1. Отсюда вопрос.