VirtualBox

Changeset 52495 in vbox


Ignore:
Timestamp:
Aug 25, 2014 2:30:41 PM (11 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
95721
Message:

Runtime: cdefs.h changes to avoid warnings from some g++ versions (related to allegedly invalid use of offsetof), and types.h changes fixing warnings related to RTUINT128_INIT / RTUINT128_INIT_C, the additional curlies are needed for the union

Location:
trunk/include/iprt
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/iprt/cdefs.h

    r51770 r52495  
    15401540 * @param   member  Member.
    15411541 */
    1542 #define RT_OFFSETOF(type, member)               ( (int)(uintptr_t)&( ((type *)(void *)0)->member) )
     1542#if defined(__GNUC__) && defined(__cplusplus)
     1543# define RT_OFFSETOF(type, member)              ( (int)(uintptr_t)&( ((type *)(void *)0x1000)->member) - 0x1000 )
     1544#else
     1545# define RT_OFFSETOF(type, member)              ( (int)(uintptr_t)&( ((type *)(void *)0)->member) )
     1546#endif
    15431547
    15441548/** @def RT_UOFFSETOF
     
    15541558 * @param   member  Member.
    15551559 */
    1556 #define RT_UOFFSETOF(type, member)              ( (uintptr_t)&( ((type *)(void *)0)->member) )
     1560#if defined(__GNUC__) && defined(__cplusplus)
     1561# define RT_UOFFSETOF(type, member)             ( (uintptr_t)&( ((type *)(void *)0x1000)->member) - 0x1000 )
     1562#else
     1563# define RT_UOFFSETOF(type, member)             ( (uintptr_t)&( ((type *)(void *)0)->member) )
     1564#endif
    15571565
    15581566/** @def RT_OFFSETOF_ADD
  • trunk/include/iprt/types.h

    r52335 r52495  
    488488 * Portable RTUINT128U initializer. */
    489489#ifdef RT_BIG_ENDIAN
    490 # define RTUINT128_INIT(a_Hi, a_Lo) { a_Hi, a_Lo }
    491 #else
    492 # define RTUINT128_INIT(a_Hi, a_Lo) { a_Lo, a_Hi }
     490# define RTUINT128_INIT(a_Hi, a_Lo) { { a_Hi, a_Lo } }
     491#else
     492# define RTUINT128_INIT(a_Hi, a_Lo) { { a_Lo, a_Hi } }
    493493#endif
    494494
     
    496496 * Portable RTUINT128U initializer for 64-bit constants. */
    497497#ifdef RT_BIG_ENDIAN
    498 # define RTUINT128_INIT_C(a_Hi, a_Lo) { UINT64_C(a_Hi), UINT64_C(a_Lo) }
    499 #else
    500 # define RTUINT128_INIT_C(a_Hi, a_Lo) { UINT64_C(a_Lo), UINT64_C(a_Hi) }
     498# define RTUINT128_INIT_C(a_Hi, a_Lo) { { UINT64_C(a_Hi), UINT64_C(a_Lo) } }
     499#else
     500# define RTUINT128_INIT_C(a_Hi, a_Lo) { { UINT64_C(a_Lo), UINT64_C(a_Hi) } }
    501501#endif
    502502
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette