Mam funkcję, która bada tablicę i zwraca indeks tablicy, jeśli sonda się powiedzie.Prawidłowy sposób zwracania kodu błędu dla funkcji zwracającej size_t
W moim kodzie zrobiłem każdy typ dotyczący indeksu tablicowego, aby uzyskać jasność.
Jaki jest preferowany sposób zachowania tej przejrzystości dla tej funkcji? Czy powinienem wziąć argument wskaźnika do zmiennej błędu i ustawić to?
inline size_t
lin_search(const double *pxa, const double x, const size_t idxlow, const size_t idxhigh)
{
for (size_t i = idxlow; i < idxhigh; i++)
{
if (pxa[i] <= x && pxa[i+1] > x)
return i;
}
return -1; // If I change the return type to f.ex long int this works
// but I am no longer consistent
}
Wtedy mogę używać go jako
index = linsearch(parray, x, 0, n - 1);
if (index == -1)
... not found
Czy zamiast tego można zamienić funkcje na (podpisany) 'ssize_t'? –
Nie mam 'ssize_t'. Czy możesz zwrócić słowo "SIZE_MAX", aby wskazać niepowodzenie? –
'ssize_t' nie jest standardem C (to POSIX). C ma jednak 'ptrdiff_t'. To powiedziawszy, '(size_t) -1' jest (AFAIK) zawsze zdefiniowane jako' SIZE_MAX'; można by po prostu użyć '#define LIN_SEARCH_ERR ((size_t) -1)' lub podobnego. –