addon functions

Aug 01, 2023 Last reply: 2 years ago 4 Replies

Lewin Edwards in his dosfs file system uses the ldiv() functions shown below: sector = ldiv(offset, SECTOR_SIZE).quot and offset = ldiv(offset, SECTOR_SIZE).rem Anybody know how this is declared or, maybe, defined?



Hul


Am 01.08.2023 um 23:21 schrieb Hul Tytus:

Seriously? Does every C compiler you use come without a manual?

How else could you possibly find it hard to discover the declaration and semantics of a 33+ years old C standard library function like that?

$ man ldiv

------------------------------------------------------------------------------ div(3) Library Functions Manual div(3)

NAME div, ldiv, lldiv, imaxdiv - compute quotient and remainder of an inte‐ ger division

LIBRARY Standard C library (libc, -lc)

SYNOPSIS #include <stdlib.h>

div_t div(int numerator, int denominator); ldiv_t ldiv(long numerator, long denominator); lldiv_t lldiv(long long numerator, long long denominator);

#include <inttypes.h>

imaxdiv_t imaxdiv(intmax_t numerator, intmax_t denominator);

[...]

It's a standard C library function. You can see its definition in the C standards (draft versions of all modern C standards are freely available online). A good reference for C is the "cppreference" site, with the exact page here being:

formatting link

The "div" functions are almost never used these days - any decent compiler will do as good or better when the code is expressed simply as:

sector = offset / SECTOR_SIZE; offset = offset % SECTOR_SIZE;

But the "div" functions made sense with older and poorer compilers.

Thanks Grant. I'd never seen those before and assumed they were Lewin's creation.

Hul

Grant Edwards snipped-for-privacy@> > Lewin Edwards in his dosfs file system uses the ldiv() functions shown below:

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required