c++ - Is it appropriate to use off_t for non-byte offsets? -


suppose i'm writing function takes float a[] , offset, array, , returns element @ offset. reasonable use signature

float foo(float* a, off_t offset); 

for it? or off_t relevant offsets in bytes, rather pointer arithmetic aribtrary element sizes? i.e. reasonable a[offset] when offset of type off_t?

the gnu c library reference manual says:

off_t      signed integer type used represent file sizes.  

but doesn't tell me much.

my intuition answer "no", since actual address used in a[offset] address of + sizeof(float) * offset , "sizeof(float) * offset" off_t, , sizeof(float) size_t, , both constants 'dimensions'.

note: offset might negative.

is there reason why don't use int? it's default type integral values in c++, , should used unless there reason not to.

of course, 1 reason might overflow. if context such end large arrays, might want use ptrdiff_t, defined (in c , c++) type resulting subtraction of 2 pointers: in other words, guaranteed not overflow (when used offset) types size greater 1.


Comments