ferencd@0: #if defined(HAS_CXX0X_CSTDINT_H) ferencd@0: #include ferencd@0: #endif ferencd@0: ferencd@0: #include ferencd@0: ferencd@0: struct thing { ferencd@0: unsigned char one; ferencd@0: #if defined(HAS_CXX0X_CSTDINT_H) ferencd@0: uint32_t four; ferencd@0: #endif ferencd@0: #if defined(HAS_CXX0X_LONG_LONG) ferencd@0: long long eight; ferencd@0: #endif ferencd@0: }; ferencd@0: ferencd@0: #include ferencd@0: ferencd@0: int main() ferencd@0: { ferencd@0: #if defined (HAS_CXX0X_NULLPTR) ferencd@0: void *nix = nullptr; ferencd@0: #else /* HAS_CXX0X_NULLPTR */ ferencd@0: void *nix = 0; ferencd@0: #endif /* HAS_CXX0X_NULLPTR */ ferencd@0: ferencd@0: #if defined(HAS_CXX0X_STATIC_ASSERT) ferencd@0: static_assert(1 < 42, "Your C++ compiler is b0rked"); ferencd@0: #endif /* HAS_CXX0X_STATIC_ASSERT */ ferencd@0: ferencd@0: #if defined(HAS_CXX0X_FUNC) ferencd@0: const char *funcname = __func__; ferencd@0: printf("the name of main() function is: %s\n", funcname); ferencd@0: #endif /* HAS_CXX0X_FUNC */ ferencd@0: ferencd@0: #if defined(HAS_CXX0X_SIZEOF_MEMBER) ferencd@0: size_t onesize = sizeof(thing::one); ferencd@0: #if defined(HAS_CXX0X_STATIC_ASSERT) ferencd@0: static_assert(sizeof(thing::one) == 1, "Your char is not one byte long"); ferencd@0: #endif /* HAS_CXX0X_STATIC_ASSERT */ ferencd@0: ferencd@0: #if defined(HAS_CXX0X_CSTDINT_H) ferencd@0: size_t foursize = sizeof(thing::four); ferencd@0: #if defined(HAS_CXX0X_STATIC_ASSERT) ferencd@0: static_assert(sizeof(thing::four) == 4, "Your uint32_t is not 32 bit long"); ferencd@0: #endif /* HAS_CXX0X_STATIC_ASSERT */ ferencd@0: #endif /* HAS_CXX0X_CSTDINT_H */ ferencd@0: #if defined(HAS_CXX0X_LONG_LONG) ferencd@0: size_t eightsize = sizeof(thing::eight); ferencd@0: #if defined(HAS_CXX0X_STATIC_ASSERT) ferencd@0: static_assert(sizeof(thing::eight) == 8, "Your long long is not 64 bit long"); ferencd@0: #endif /* HAS_CXX0X_STATIC_ASSERT */ ferencd@0: #endif /* HAS_CXX0X_LONG_LONG */ ferencd@0: #endif /* HAS_CXX0X_SIZEOF_MEMBER */ ferencd@0: ferencd@0: return 0; ferencd@0: }