On Thu, 07 Jul 2011 11:57:51 -0400, Steven Schveighoffer wrote: > Well, I can't really say I understand the point of using this macro at > all. sizeof is a builtin, and part of the C spec. Why not just use > sizeof? >
Well, have a look please at ioctl.h (linux). You will find the following macros: #define _IOC(dir,type,nr,size) \ (((dir) << _IOC_DIRSHIFT) | \ ((type) << _IOC_TYPESHIFT) | \ ((nr) << _IOC_NRSHIFT) | \ ((size) << _IOC_SIZESHIFT)) #define _IOC_TYPECHECK(t) (sizeof(t)) /* used to create numbers */ #define _IO(type,nr) _IOC(_IOC_NONE,(type),(nr),0) #define _IOR(type,nr,size) _IOC(_IOC_READ,(type),(nr),(_IOC_TYPECHECK (size))) #define _IOW(type,nr,size) _IOC(_IOC_WRITE,(type),(nr), (_IOC_TYPECHECK(size))) #define _IOWR(type,nr,size) _IOC(_IOC_READ|_IOC_WRITE,(type),(nr), (_IOC_TYPECHECK(size))) This is what I am after. However I thought that a simplified case will make it easier to describe the problem.