Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 1st, 2012  |  syntax: None  |  size: 1.37 KB  |  hits: 17  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. GCC 4.4.3 offsetof constant expression bug. How should I work around this?
  2. struct SomeType {
  3.  
  4.     int m_member;
  5. };
  6.  
  7. static const size_t memberOffset = offsetof(SomeType, m_member);
  8.        
  9. arm-linux-androideabi-g++ -MMD -MP -MF ./obj/local/armeabi-v7a/... -fpic -ffunction-sections -funwind-tables -fstack-protector -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__  -Wno-psabi -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -fno-exceptions -fno-rtti -O2 -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -finline-limit=300 - -I/Users/Byron/bin/android-ndk-r7/sources/cxx-stl/system/include -
  10.  -Wa,--noexecstack   -O0 -g -w -D_ANDROID   -I/blah/bin/android-ndk-r7/platforms/android-14/arch-arm/usr/include -c  
  11. /MyFile.h:330: error: '->' cannot appear in a constant-expression
  12. /MyFile.h:330: error: '&' cannot appear in a constant-expression
  13.        
  14. offsetof(type, member-designator)
  15.        
  16. static type t;
  17.        
  18. #include <cstddef>
  19.  
  20. struct SomeType {
  21.     int m_member;
  22. };
  23.  
  24. static const int memberOffset = offsetof(SomeType, m_member);
  25.        
  26. #include <cstddef>
  27.  
  28. #ifdef BROKEN_OFFSETOF_MACRO
  29. #undef offsetof
  30. #define offsetof(type, member)   ((size_t)((char *)&(*(type *)0).member -
  31.                                            (char *)&(*(type *)0)))
  32. #endif /* BROKEN_OFFSETOF_MACRO */
  33.  
  34. struct SomeType {
  35.     int m_member;
  36. };
  37.  
  38. static const int memberOffset = offsetof(SomeType, m_member);