Przeglądaj źródła

use __builtin_offsetof to implement offsetof when possible

apparently recent gcc versions have intentionally broken the
traditional definition by treating it as a non-constant expression.
the traditional definition may also be problematic for c++ programs.
Rich Felker 12 lat temu
rodzic
commit
a7c1f9727a
1 zmienionych plików z 4 dodań i 0 usunięć
  1. 4 0
      include/stddef.h

+ 4 - 0
include/stddef.h

@@ -14,6 +14,10 @@
 
 #include <bits/alltypes.h>
 
+#if __GNUC__ > 3
+#define offsetof(type, member) __builtin_offsetof(type, member)
+#else
 #define offsetof(type, member) ((size_t)( (char *)&(((type *)0)->member) - (char *)0 ))
+#endif
 
 #endif