Compilation warning on offsetof in 5.4 and trunk

From: Date: Sun, 03 Jul 2011 01:07:48 +0000
Subject: Compilation warning on offsetof in 5.4 and trunk
Groups: php.internals 
Request: Send a blank email to internals+get-53728@lists.php.net to get a copy of this message
Hi, in 5.4 and trunk, there is compilation warnings all pointing to STD_PHP_INI_ENTRY /home/fat/dev/php-src/trunk/sapi/fpm/fpm/fpm_main.c:1465:109: warning: cast from pointer to integer of different size /home/fat/dev/php-src/trunk/sapi/fpm/fpm/fpm_main.c:1466:85: warning: cast from pointer to integer of different size the warnings appear in sapis (cgi, fpm, ...) and extensions (standard, ...) and the problem comes from the XOffsetOf macro which is expanded to offsetof defined in Zend/zend_operators.h whit the following code added in revisions 311662 and 312264: #ifndef offsetof #define offsetof(t,f) \ ((int)(&((t*)0)->f)) #endif Before this addition, XOffsetOf was expanded to ((long) (((char *) (&(((t*)((void *)0))->f))) - ((char *) ((void *)0)))) which is defined at the end of main/php.h. Two questions: 1- is this possible to change Zend/zend_operators.h to use the old macros ? (short term solution) 2- Why not using the build-in POSIX offsetof (man offsetof) when available ? (long term solution) thx ++ jerome PS: i'm compiling on 64 bits linux

« previous php.internals (#53728) next »