Compilation warning on offsetof in 5.4 and trunk
| From: | Jérôme Loyet | 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