| // Boost config.hpp configuration test program file -----------------------// |
| |
| // (C) Copyright John Maddock 2001 - 2003. |
| // (C) Copyright Jens Maurer 2001. |
| // (C) Copyright Peter Dimov 2001. |
| // (C) Copyright Darin Adler 2001. |
| // (C) Copyright Beman Dawes 2002. |
| // Use, modification and distribution are subject to the |
| // Boost Software License, Version 1.0. (See accompanying file |
| // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) |
| |
| // See http://www.boost.org/libs/config for most recent version. |
| // |
| // Revision $Id: config_info.cpp 65703 2010-10-01 09:19:44Z johnmaddock $ |
| // |
| |
| #include <boost/config.hpp> |
| #include <boost/version.hpp> |
| #include <iostream> |
| #include <iomanip> |
| #include <string.h> |
| #include <limits.h> |
| #include <stdlib.h> |
| #include <stddef.h> |
| |
| #ifdef BOOST_HAS_UNISTD_H |
| #include <unistd.h> |
| #endif |
| |
| static unsigned int indent = 4; |
| static unsigned int width = 40; |
| |
| using std::cout; |
| using std::istream; |
| |
| void print_macro(const char* name, const char* value) |
| { |
| // if name == value+1 then then macro is not defined, |
| // in which case we don't print anything: |
| if(0 != strcmp(name, value+1)) |
| { |
| for(unsigned i = 0; i < indent; ++i) std::cout.put(' '); |
| std::cout << std::setw(width); |
| cout.setf(istream::left, istream::adjustfield); |
| std::cout << name; |
| if(value[1]) |
| { |
| // macro has a value: |
| std::cout << value << "\n"; |
| } |
| else |
| { |
| // macro is defined but has no value: |
| std::cout << " [no value]\n"; |
| } |
| } |
| } |
| |
| #define PRINT_MACRO(X) print_macro(#X, BOOST_STRINGIZE(=X)) |
| |
| template <class T> |
| void print_expression(const char* expression, T val) |
| { |
| for(unsigned i = 0; i < indent; ++i) std::cout.put(' '); |
| std::cout << std::setw(width); |
| std::cout.setf(istream::left, istream::adjustfield); |
| std::cout << expression << "=" << val << std::endl; |
| } |
| |
| #define PRINT_EXPRESSION(E) print_expression(#E, E); |
| |
| template <class T> |
| void print_byte_order(const char* what, T /* t */ ) |
| { |
| T val = 0; |
| unsigned i; |
| for(i = 1; i < sizeof(T); ++i) |
| { |
| val |= (CHAR_BIT * static_cast<T>(i)) << (CHAR_BIT * static_cast<T>(i)); |
| } |
| const char* p = reinterpret_cast<const char*>(&val); |
| |
| for(i = 0; i < indent; ++i) std::cout.put(' '); |
| std::cout << std::setw(width); |
| std::cout.setf(istream::left, istream::adjustfield); |
| std::cout << what << "="; |
| for(i = 0; i < sizeof(T); ++i) |
| { |
| std::cout << (int)p[i] << " "; |
| } |
| std::cout << std::endl; |
| } |
| |
| #define PRINT_ORDER(T) print_byte_order(BOOST_STRINGIZE(byte order for type T), T()) |
| |
| template <class T> |
| void print_sign(const char* what, T t) |
| { |
| t = static_cast<T>(-1); // cast suppresses warnings |
| for(unsigned i = 0; i < indent; ++i) std::cout.put(' '); |
| std::cout << "Type " << what << " is " << ((t > 0) ? "unsigned" : "signed") << std::endl; |
| } |
| |
| #define PRINT_SIGN(T) print_sign(#T, T()) |
| |
| |
| void print_compiler_macros() |
| { |
| std::cout << BOOST_COMPILER << "\n"; |
| // Borland options: |
| PRINT_MACRO(__BORLANDC__); |
| PRINT_MACRO(__CDECL__); |
| PRINT_MACRO(_CHAR_UNSIGNED); |
| PRINT_MACRO(__CODEGUARD__); |
| PRINT_MACRO(__CONSOLE__); |
| PRINT_MACRO(_CPPUNWIND); |
| PRINT_MACRO(__cplusplus); |
| PRINT_MACRO(__FLAT__); |
| PRINT_MACRO(__FUNC__); |
| PRINT_MACRO(_M_IX86); |
| PRINT_MACRO(__MSDOS__); |
| PRINT_MACRO(__MT__ ); |
| PRINT_MACRO(__PASCAL__); |
| PRINT_MACRO(__STDC__); |
| PRINT_MACRO(__TLS__); |
| PRINT_MACRO(_WCHAR_T); |
| PRINT_MACRO(_Windows); |
| PRINT_MACRO(__WIN32__); |
| PRINT_MACRO(_WIN32); |
| PRINT_MACRO(_WIN64); |
| PRINT_MACRO(_WIN32_WCE); |
| PRINT_MACRO(WIN32); |
| PRINT_MACRO(_RTLDLL); |
| PRINT_MACRO(__DEBUG); |
| |
| // Internal MSVC 7 error workaround (Peter Dimov) |
| |
| #ifndef _NATIVE_WCHAR_T_DEFINED |
| PRINT_MACRO(_WCHAR_T_DEFINED); |
| #endif |
| // MSVC macros: |
| PRINT_MACRO(_CPPRTTI); |
| PRINT_MACRO(_DLL); |
| PRINT_MACRO(_M_ALPHA); |
| PRINT_MACRO(_M_MPPC); |
| PRINT_MACRO(_M_MRX000); |
| PRINT_MACRO(_M_PPC); |
| PRINT_MACRO(_MFC_VER); |
| PRINT_MACRO(_MSC_EXTENSIONS); |
| PRINT_MACRO(_MSC_VER); |
| PRINT_MACRO(_MSC_FULL_VER); |
| PRINT_MACRO(_MT); |
| PRINT_MACRO(_NATIVE_WCHAR_T_DEFINED); |
| // GNUC options: |
| PRINT_MACRO(__GNUC__); |
| PRINT_MACRO(__GNUC_MINOR__); |
| PRINT_MACRO(__GNUC_PATCHLEVEL__); |
| PRINT_MACRO(__STDC_VERSION__); |
| PRINT_MACRO(__GNUG__); |
| PRINT_MACRO(__STRICT_ANSI__); |
| PRINT_MACRO(__GXX_EXPERIMENTAL_CXX0X__); |
| PRINT_MACRO(__VERSION__); |
| PRINT_MACRO(__OPTIMIZE__); |
| PRINT_MACRO(__CHAR_UNSIGNED__); |
| PRINT_MACRO(__REGISTER_PREFIX__); |
| PRINT_MACRO(__USER_LABEL_PREFIX__); |
| PRINT_MACRO(__GNUPRO__); |
| PRINT_MACRO(__EXCEPTIONS); |
| PRINT_MACRO(__FreeBSD__); |
| PRINT_MACRO(__FreeBSD_cc_version); |
| PRINT_MACRO(__ELF__); |
| PRINT_MACRO(__GNUPRO__); |
| PRINT_MACRO(unix); |
| PRINT_MACRO(bsd); |
| PRINT_MACRO(vax); |
| PRINT_MACRO(mc68000); |
| PRINT_MACRO(m68k); |
| PRINT_MACRO(M68020); |
| PRINT_MACRO(_AM29K); |
| PRINT_MACRO(ns32000); |
| PRINT_MACRO(sun); |
| PRINT_MACRO(pyr); |
| PRINT_MACRO(sequent); |
| PRINT_MACRO(__i386__); |
| PRINT_MACRO(__sparc); |
| PRINT_MACRO(__sparc__); |
| PRINT_MACRO(__powerpc__); |
| PRINT_MACRO(__hppa); |
| PRINT_MACRO(__CYGWIN__); |
| PRINT_MACRO(__MINGW32__); |
| // HP aCC: |
| PRINT_MACRO(__HP_aCC); |
| PRINT_MACRO(_HPACC_); |
| PRINT_MACRO(__LP64__); |
| PRINT_MACRO(__RISC2_0__); |
| PRINT_MACRO(__STDCPP__); |
| PRINT_MACRO(__hppa); |
| PRINT_MACRO(__hpux); |
| PRINT_MACRO(__hp9000s800); |
| PRINT_MACRO(__hp9000s700); |
| PRINT_MACRO(_PA_RISC1_1); |
| PRINT_MACRO(__HPUX_SOURCE); |
| PRINT_MACRO(_INCLUDE__STDC_A1_SOURCE); |
| // SGI IRIX: |
| PRINT_MACRO(__sgi); |
| PRINT_MACRO(_COMPILER_VERSION); |
| // Sunpro: |
| PRINT_MACRO(__SUNPRO_CC); |
| PRINT_MACRO(__SUNPRO_CC_COMPAT); |
| PRINT_MACRO(__BUILTIN_VA_ARG_INCR); |
| PRINT_MACRO(__sun); |
| PRINT_MACRO(__SVR4); |
| PRINT_MACRO(__unix); |
| PRINT_MACRO(__sparcv9); |
| PRINT_MACRO(__i386); |
| PRINT_MACRO(i386); |
| // Metrowerks |
| PRINT_MACRO(__MWERKS__); |
| PRINT_MACRO(__MSL__); |
| PRINT_MACRO(__MSL_CPP__); |
| PRINT_MACRO(__A5__); |
| PRINT_MACRO(__embedded_cplusplus); |
| PRINT_MACRO(__fourbyteints__); |
| PRINT_MACRO(__IEEEdoubles__); |
| PRINT_MACRO(__MC68K__); |
| PRINT_MACRO(__MC68020__); |
| PRINT_MACRO(__MC68881__); |
| PRINT_MACRO(__MIPS__); |
| PRINT_MACRO(__MIPS_ISA2__); |
| PRINT_MACRO(__MIPS_ISA3__); |
| PRINT_MACRO(__MIPS_ISA4__); |
| PRINT_MACRO(__MWBROWSER__); |
| PRINT_MACRO(__profile__); |
| PRINT_MACRO(__powerc); |
| PRINT_MACRO(_powerc); |
| PRINT_MACRO(__POWERPC__); |
| PRINT_MACRO(macintosh); |
| PRINT_MACRO(__MACH__); |
| PRINT_MACRO(__APPLE__); |
| PRINT_MACRO(__APPLE_CC__); |
| // MPW (MrCpp and SCpp) |
| PRINT_MACRO(__MRC__); |
| PRINT_MACRO(__SC__); |
| PRINT_MACRO(__FPCE__); |
| PRINT_MACRO(__FPCE_IEEE__); |
| PRINT_MACRO(MPW_CPLUS); |
| PRINT_MACRO(MPW_C); |
| PRINT_MACRO(__MC601); |
| PRINT_MACRO(__POWERPC); |
| PRINT_MACRO(__useAppleExts__); |
| PRINT_MACRO(powerc); |
| PRINT_MACRO(MC68000); |
| PRINT_MACRO(THINK_PLUS); |
| PRINT_MACRO(mc68881); |
| PRINT_MACRO(__FAR_CODE__); |
| PRINT_MACRO(__FAR_DATA__); |
| PRINT_MACRO(__CFM68K__); |
| // EDG |
| PRINT_MACRO(__EDG__); |
| PRINT_MACRO(__EDG_VERSION__); |
| PRINT_MACRO(c_plusplus); // indication for strict mode |
| PRINT_MACRO(_BOOL); |
| PRINT_MACRO(_EXPLICIT); |
| PRINT_MACRO(__SIGNED_CHARS__); |
| PRINT_MACRO(_TYPENAME); |
| PRINT_MACRO(_WCHAR_T); |
| PRINT_MACRO(__ARRAY_OPERATORS); |
| PRINT_MACRO(__EDG_ABI_COMPATIBILITY_VERSION); |
| PRINT_MACRO(__EDG_IMPLICIT_USING_STD); |
| PRINT_MACRO(__EDG_RUNTIME_USES_NAMESPACES); |
| PRINT_MACRO(__BOOL_DEFINED); |
| PRINT_MACRO(__RTTI); |
| PRINT_MACRO(__PLACEMENT_DELETE); |
| PRINT_MACRO(__NO_LONG_LONG); |
| |
| // Intel options: |
| PRINT_MACRO(__INTEL__); |
| PRINT_MACRO(__ICC); |
| PRINT_MACRO(__ICL); |
| PRINT_MACRO(__ECC); |
| PRINT_MACRO(__INTEL_COMPILER); |
| PRINT_MACRO(__INITIAL_POINTER_SIZE); |
| PRINT_MACRO(_INTEGRAL_MAX_BITS); |
| PRINT_MACRO(__INTEL_COMPILER_BUILD_DATE); |
| PRINT_MACRO(__INTEL_MS_COMPAT_LEVEL); |
| PRINT_MACRO(__LONG_DOUBLE_SIZE__); |
| PRINT_MACRO(_M_X64); |
| PRINT_MACRO(_OPENMP); |
| PRINT_MACRO(_OPENMPT); |
| PRINT_MACRO(_PGO_INSTRUMENT); |
| PRINT_MACRO(__QMSPP_); |
| |
| // misc compilers not covered so far: |
| PRINT_MACRO(__USLC__); |
| PRINT_MACRO(__DECCXX); |
| PRINT_MACRO(__IBMCPP__); |
| PRINT_MACRO(_REENTRANT); |
| PRINT_MACRO(_PTHREADS); |
| PRINT_MACRO(__STDC_HOSTED__); |
| PRINT_MACRO(__COMO__); |
| PRINT_MACRO(__COMO_VERSION__); |
| PRINT_MACRO(__DM__); |
| PRINT_MACRO(__osf__); |
| PRINT_MACRO(__OSF__); |
| PRINT_MACRO(__QNXNTO__); |
| PRINT_MACRO(__QNX__); |
| PRINT_MACRO(_NTO_VERSION); |
| PRINT_MACRO(__OPEN64__); |
| PRINT_MACRO(__open64); |
| } |
| |
| void print_stdlib_macros() |
| { |
| std::cout << BOOST_STDLIB << std::endl; |
| #ifdef _RWSTD_VER |
| // Rogue Wave 2.x config options: |
| PRINT_MACRO(__NO_EDG_EXCEPTION_CLASSES); |
| PRINT_MACRO(_RWSTD_ALLOCATOR); |
| PRINT_MACRO(_RWSTD_BAD_ALLOC_DEFINED); |
| PRINT_MACRO(_RWSTD_BAD_EXCEPTION_DEFINED); |
| PRINT_MACRO(_RWSTD_BOUNDS_CHECKING); |
| PRINT_MACRO(_RWSTD_COMPILE_INSTANTIATE); |
| PRINT_MACRO(_RWSTD_DEFAULT_PRECISION); |
| PRINT_MACRO(_RWSTD_EXCEPTION_DEFINED); |
| PRINT_MACRO(_RWSTD_EXCEPTION_HANDLER_IN_STD); |
| PRINT_MACRO(_RWSTD_EXCEPTION_PREDEFINED); |
| PRINT_MACRO(_RWSTD_FLT_ROUNDS_IS_CONSTANT); |
| PRINT_MACRO(_RWSTD_LOCALIZED_ERRORS); |
| PRINT_MACRO(_RWSTD_MESSAGE); |
| PRINT_MACRO(_RWSTD_MUTEXATTR_DEFAULT); |
| PRINT_MACRO(_RWSTD_NO_ANSI_SPRINTF); |
| PRINT_MACRO(_RWSTD_NO_ARG_MATCH); |
| PRINT_MACRO(_RWSTD_NO_BAD_CAST); |
| PRINT_MACRO(_RWSTD_NO_BASE_CLASS_MATCH); |
| PRINT_MACRO(_RWSTD_NO_BOOL); |
| PRINT_MACRO(_RWSTD_NO_BUILTIN_CTOR); |
| PRINT_MACRO(_RWSTD_NO_CATOPEN_CATGETS); |
| PRINT_MACRO(_RWSTD_NO_CLASS_PARTIAL_SPEC); |
| PRINT_MACRO(_RWSTD_NO_COMPLEX_DEFAULT_TEMPLATES); |
| PRINT_MACRO(_RWSTD_NO_COMPLICATED_EXCEPTIONS); |
| PRINT_MACRO(_RWSTD_NO_COMPLICATED_TYPEDEF); |
| PRINT_MACRO(_RWSTD_NO_CONST_INST); |
| PRINT_MACRO(_RWSTD_NO_CTOR_RETURN); |
| PRINT_MACRO(_RWSTD_NO_DEFAULT_FOR_TPARAM); |
| PRINT_MACRO(_RWSTD_NO_DEFAULT_TEMPLATE_ARGS); |
| PRINT_MACRO(_RWSTD_NO_DESTROY_BUILTIN); |
| PRINT_MACRO(_RWSTD_NO_DESTROY_NONBUILTIN); |
| PRINT_MACRO(_RWSTD_NO_EMBEDDED_TYPEDEF); |
| PRINT_MACRO(_RWSTD_NO_EX_SPEC); |
| PRINT_MACRO(_RWSTD_NO_EXCEPTIONS); |
| PRINT_MACRO(_RWSTD_NO_EXPLICIT); |
| PRINT_MACRO(_RWSTD_NO_EXPLICIT_ARG); |
| PRINT_MACRO(_RWSTD_NO_EXPLICIT_FUNC_INSTANTIATION); |
| PRINT_MACRO(_RWSTD_NO_EXPLICIT_INSTANTIATION); |
| PRINT_MACRO(_RWSTD_NO_EXTENSION); |
| PRINT_MACRO(_RWSTD_NO_FORWARD_SPECIALIZATIONS); |
| PRINT_MACRO(_RWSTD_NO_FPOS_T); |
| PRINT_MACRO(_RWSTD_NO_FRIEND_TEMPLATES); |
| PRINT_MACRO(_RWSTD_NO_FUNC_PARTIAL_SPEC); |
| PRINT_MACRO(_RWSTD_NO_GETTIMEOFDAY); |
| PRINT_MACRO(_RWSTD_NO_GLOBAL_TZ); |
| PRINT_MACRO(_RWSTD_NO_INHERITED_TYPEDEFS); |
| PRINT_MACRO(_RWSTD_NO_INIT_CONST_TEMPLATE_REF_ARG); |
| PRINT_MACRO(_RWSTD_NO_INT_TYPEDEF); |
| PRINT_MACRO(_RWSTD_NO_LDIV); |
| PRINT_MACRO(_RWSTD_NO_LEADING_UNDERSCORE); |
| PRINT_MACRO(_RWSTD_NO_LOCALE); |
| PRINT_MACRO(_RWSTD_NO_LONG_NAME); |
| PRINT_MACRO(_RWSTD_NO_LONGDOUBLE); |
| PRINT_MACRO(_RWSTD_NO_MBSTATE_T); |
| PRINT_MACRO(_RWSTD_NO_MEM_CLASS_TEMPLATES); |
| PRINT_MACRO(_RWSTD_NO_MEMBER_TEMPLATES); |
| PRINT_MACRO(_RWSTD_NO_MEMBER_TYPE_TPARAM); |
| PRINT_MACRO(_RWSTD_NO_MEMBER_WO_DEF_CTOR); |
| PRINT_MACRO(_RWSTD_NO_MEMMOVE); |
| PRINT_MACRO(_RWSTD_NO_MULTI_DIM_ARRAY); |
| PRINT_MACRO(_RWSTD_NO_MUTABLE); |
| PRINT_MACRO(_RWSTD_NO_NAME_INJECTION); |
| PRINT_MACRO(_RWSTD_NO_NAMESPACE); |
| PRINT_MACRO(_RWSTD_NO_NESTING_TEMPLATES); |
| PRINT_MACRO(_RWSTD_NO_NEW_BRACKETS); |
| PRINT_MACRO(_RWSTD_NO_NEW_DECL); |
| PRINT_MACRO(_RWSTD_NO_NEW_HEADER); |
| PRINT_MACRO(_RWSTD_NO_NEW_TEMPLATE_SYNTAX); |
| PRINT_MACRO(_RWSTD_NO_NONCLASS_ARROW_RETURN); |
| PRINT_MACRO(_RWSTD_NO_NONTYPE_ARGS); |
| PRINT_MACRO(_RWSTD_NO_ONLY_NEEDED_INSTANTIATION); |
| PRINT_MACRO(_RWSTD_NO_OVERLOAD_C_POW); |
| PRINT_MACRO(_RWSTD_NO_OVERLOAD_OF_TEMPLATE_FUNCTION); |
| PRINT_MACRO(_RWSTD_NO_OVERLOAD_WCHAR); |
| PRINT_MACRO(_RWSTD_NO_PART_SPEC_OVERLOAD); |
| PRINT_MACRO(_RWSTD_NO_RET_TEMPLATE); |
| PRINT_MACRO(_RWSTD_NO_SIMPLE_DEFAULT_TEMPLATES); |
| PRINT_MACRO(_RWSTD_NO_STATIC_CAST); |
| PRINT_MACRO(_RWSTD_NO_STATIC_DEF); |
| PRINT_MACRO(_RWSTD_NO_STATIC_DEF2); |
| PRINT_MACRO(_RWSTD_NO_STATIC_DEF3); |
| PRINT_MACRO(_RWSTD_NO_STATIC_MEM_DEF); |
| PRINT_MACRO(_RWSTD_NO_STI_SIMPLE); |
| PRINT_MACRO(_RWSTD_NO_STI_TEMPLATE); |
| PRINT_MACRO(_RWSTD_NO_STREAM_LONG_DOUBLE); |
| PRINT_MACRO(_RWSTD_NO_STRFTIME_CAPC); |
| PRINT_MACRO(_RWSTD_NO_STRICT_TEMPLATE_INSTANTIATE); |
| PRINT_MACRO(_RWSTD_NO_SWPRINTF); |
| PRINT_MACRO(_RWSTD_NO_TEMPLATE_ON_RETURN_TYPE); |
| PRINT_MACRO(_RWSTD_NO_TEMPLATE_TEMPLATE); |
| PRINT_MACRO(_RWSTD_NO_THREADS); |
| PRINT_MACRO(_RWSTD_NO_THROW_SPEC_ON_NEW); |
| PRINT_MACRO(_RWSTD_NO_THROW_WITH_SHARED); |
| PRINT_MACRO(_RWSTD_NO_TYPEDEF_INST); |
| PRINT_MACRO(_RWSTD_NO_TYPEDEF_OVERLOAD); |
| PRINT_MACRO(_RWSTD_NO_TYPENAME); |
| PRINT_MACRO(_RWSTD_NO_UNDEFINED_FRIEND); |
| PRINT_MACRO(_RWSTD_NO_UNINITIALIZED_STATIC_DEF); |
| PRINT_MACRO(_RWSTD_NO_WCHAR_H); |
| PRINT_MACRO(_RWSTD_NO_WCTYPE_H); |
| PRINT_MACRO(_RWSTD_NO_WIDE_CHAR); |
| PRINT_MACRO(_RWSTD_NO_WINT_TYPE); |
| PRINT_MACRO(_RWSTD_NO_WSTR); |
| PRINT_MACRO(_RWSTD_NOT_ALL_WSTR_CFUNCTIONS); |
| PRINT_MACRO(_RWSTD_POSIX_D10_THREADS); |
| PRINT_MACRO(_RWSTD_POSIX_THREADS); |
| PRINT_MACRO(_RWSTD_REQUIRES_IEEEFP); |
| PRINT_MACRO(_RWSTD_SOLARIS_THREADS); |
| PRINT_MACRO(_RWSTD_STRUCT_TM_TZ); |
| PRINT_MACRO(_RWSTD_WIDE_STRING_NULL_PROBLEM); |
| #elif defined(__STD_RWCOMPILER_H__) |
| // Rogue Wave 1.x std lib: |
| PRINT_MACRO(__NO_EDG_EXCEPTION_CLASSES); |
| PRINT_MACRO(RWSTD_ALLOCATOR); |
| PRINT_MACRO(RWSTD_BAD_ALLOC_DEFINED); |
| PRINT_MACRO(RWSTD_BAD_EXCEPTION_DEFINED); |
| PRINT_MACRO(RWSTD_BOUNDS_CHECKING); |
| PRINT_MACRO(RWSTD_COMPILE_INSTANTIATE); |
| PRINT_MACRO(RWSTD_DEFAULT_PRECISION); |
| PRINT_MACRO(RWSTD_EXCEPTION_DEFINED); |
| PRINT_MACRO(RWSTD_EXCEPTION_HANDLER_IN_STD); |
| PRINT_MACRO(RWSTD_EXCEPTION_PREDEFINED); |
| PRINT_MACRO(RWSTD_FLT_ROUNDS_IS_CONSTANT); |
| PRINT_MACRO(RWSTD_LOCALIZED_ERRORS); |
| PRINT_MACRO(RWSTD_MESSAGE); |
| PRINT_MACRO(RWSTD_MUTEXATTR_DEFAULT); |
| PRINT_MACRO(RWSTD_NO_ANSI_SPRINTF); |
| PRINT_MACRO(RWSTD_NO_ARG_MATCH); |
| PRINT_MACRO(RWSTD_NO_BAD_CAST); |
| PRINT_MACRO(RWSTD_NO_BASE_CLASS_MATCH); |
| PRINT_MACRO(RWSTD_NO_BOOL); |
| PRINT_MACRO(RWSTD_NO_BUILTIN_CTOR); |
| PRINT_MACRO(RWSTD_NO_CATOPEN_CATGETS); |
| PRINT_MACRO(RWSTD_NO_CLASS_PARTIAL_SPEC); |
| PRINT_MACRO(RWSTD_NO_COMPLEX_DEFAULT_TEMPLATES); |
| PRINT_MACRO(RWSTD_NO_COMPLICATED_EXCEPTIONS); |
| PRINT_MACRO(RWSTD_NO_COMPLICATED_TYPEDEF); |
| PRINT_MACRO(RWSTD_NO_CONST_INST); |
| PRINT_MACRO(RWSTD_NO_CTOR_RETURN); |
| PRINT_MACRO(RWSTD_NO_DEFAULT_FOR_TPARAM); |
| PRINT_MACRO(RWSTD_NO_DEFAULT_TEMPLATE_ARGS); |
| PRINT_MACRO(RWSTD_NO_DESTROY_BUILTIN); |
| PRINT_MACRO(RWSTD_NO_DESTROY_NONBUILTIN); |
| PRINT_MACRO(RWSTD_NO_EMBEDDED_TYPEDEF); |
| PRINT_MACRO(RWSTD_NO_EX_SPEC); |
| PRINT_MACRO(RWSTD_NO_EXCEPTIONS); |
| PRINT_MACRO(RWSTD_NO_EXPLICIT); |
| PRINT_MACRO(RWSTD_NO_EXPLICIT_ARG); |
| PRINT_MACRO(RWSTD_NO_EXPLICIT_FUNC_INSTANTIATION); |
| PRINT_MACRO(RWSTD_NO_EXPLICIT_INSTANTIATION); |
| PRINT_MACRO(RWSTD_NO_EXTENSION); |
| PRINT_MACRO(RWSTD_NO_FORWARD_SPECIALIZATIONS); |
| PRINT_MACRO(RWSTD_NO_FPOS_T); |
| PRINT_MACRO(RWSTD_NO_FRIEND_TEMPLATES); |
| PRINT_MACRO(RWSTD_NO_FUNC_PARTIAL_SPEC); |
| PRINT_MACRO(RWSTD_NO_GETTIMEOFDAY); |
| PRINT_MACRO(RWSTD_NO_GLOBAL_TZ); |
| PRINT_MACRO(RWSTD_NO_INHERITED_TYPEDEFS); |
| PRINT_MACRO(RWSTD_NO_INIT_CONST_TEMPLATE_REF_ARG); |
| PRINT_MACRO(RWSTD_NO_INT_TYPEDEF); |
| PRINT_MACRO(RWSTD_NO_LDIV); |
| PRINT_MACRO(RWSTD_NO_LEADING_UNDERSCORE); |
| PRINT_MACRO(RWSTD_NO_LOCALE); |
| PRINT_MACRO(RWSTD_NO_LONG_NAME); |
| PRINT_MACRO(RWSTD_NO_LONGDOUBLE); |
| PRINT_MACRO(RWSTD_NO_MBSTATE_T); |
| PRINT_MACRO(RWSTD_NO_MEM_CLASS_TEMPLATES); |
| PRINT_MACRO(RWSTD_NO_MEMBER_TEMPLATES); |
| PRINT_MACRO(RWSTD_NO_MEMBER_TYPE_TPARAM); |
| PRINT_MACRO(RWSTD_NO_MEMBER_WO_DEF_CTOR); |
| PRINT_MACRO(RWSTD_NO_MEMMOVE); |
| PRINT_MACRO(RWSTD_NO_MULTI_DIM_ARRAY); |
| PRINT_MACRO(RWSTD_NO_MUTABLE); |
| PRINT_MACRO(RWSTD_NO_NAME_INJECTION); |
| PRINT_MACRO(RWSTD_NO_NAMESPACE); |
| PRINT_MACRO(RWSTD_NO_NESTING_TEMPLATES); |
| PRINT_MACRO(RWSTD_NO_NEW_BRACKETS); |
| PRINT_MACRO(RWSTD_NO_NEW_DECL); |
| PRINT_MACRO(RWSTD_NO_NEW_HEADER); |
| PRINT_MACRO(RWSTD_NO_NEW_TEMPLATE_SYNTAX); |
| PRINT_MACRO(RWSTD_NO_NONCLASS_ARROW_RETURN); |
| PRINT_MACRO(RWSTD_NO_NONTYPE_ARGS); |
| PRINT_MACRO(RWSTD_NO_ONLY_NEEDED_INSTANTIATION); |
| PRINT_MACRO(RWSTD_NO_OVERLOAD_C_POW); |
| PRINT_MACRO(RWSTD_NO_OVERLOAD_OF_TEMPLATE_FUNCTION); |
| PRINT_MACRO(RWSTD_NO_OVERLOAD_WCHAR); |
| PRINT_MACRO(RWSTD_NO_PART_SPEC_OVERLOAD); |
| PRINT_MACRO(RWSTD_NO_RET_TEMPLATE); |
| PRINT_MACRO(RWSTD_NO_SIMPLE_DEFAULT_TEMPLATES); |
| PRINT_MACRO(RWSTD_NO_STATIC_CAST); |
| PRINT_MACRO(RWSTD_NO_STATIC_DEF); |
| PRINT_MACRO(RWSTD_NO_STATIC_DEF2); |
| PRINT_MACRO(RWSTD_NO_STATIC_DEF3); |
| PRINT_MACRO(RWSTD_NO_STATIC_MEM_DEF); |
| PRINT_MACRO(RWSTD_NO_STI_SIMPLE); |
| PRINT_MACRO(RWSTD_NO_STI_TEMPLATE); |
| PRINT_MACRO(RWSTD_NO_STREAM_LONG_DOUBLE); |
| PRINT_MACRO(RWSTD_NO_STRFTIME_CAPC); |
| PRINT_MACRO(RWSTD_NO_STRICT_TEMPLATE_INSTANTIATE); |
| PRINT_MACRO(RWSTD_NO_SWPRINTF); |
| PRINT_MACRO(RWSTD_NO_TEMPLATE_ON_RETURN_TYPE); |
| PRINT_MACRO(RWSTD_NO_TEMPLATE_TEMPLATE); |
| PRINT_MACRO(RWSTD_NO_THREADS); |
| PRINT_MACRO(RWSTD_NO_THROW_SPEC_ON_NEW); |
| PRINT_MACRO(RWSTD_NO_THROW_WITH_SHARED); |
| PRINT_MACRO(RWSTD_NO_TYPEDEF_INST); |
| PRINT_MACRO(RWSTD_NO_TYPEDEF_OVERLOAD); |
| PRINT_MACRO(RWSTD_NO_TYPENAME); |
| PRINT_MACRO(RWSTD_NO_UNDEFINED_FRIEND); |
| PRINT_MACRO(RWSTD_NO_UNINITIALIZED_STATIC_DEF); |
| PRINT_MACRO(RWSTD_NO_WCHAR_H); |
| PRINT_MACRO(RWSTD_NO_WCTYPE_H); |
| PRINT_MACRO(RWSTD_NO_WIDE_CHAR); |
| PRINT_MACRO(RWSTD_NO_WINT_TYPE); |
| PRINT_MACRO(RWSTD_NO_WSTR); |
| PRINT_MACRO(RWSTD_NOT_ALL_WSTR_CFUNCTIONS); |
| PRINT_MACRO(RWSTD_POSIX_D10_THREADS); |
| PRINT_MACRO(RWSTD_POSIX_THREADS); |
| PRINT_MACRO(RWSTD_REQUIRES_IEEEFP); |
| PRINT_MACRO(RWSTD_SOLARIS_THREADS); |
| PRINT_MACRO(RWSTD_STRUCT_TM_TZ); |
| PRINT_MACRO(RWSTD_WIDE_STRING_NULL_PROBLEM); |
| #endif |
| // Dinkumware options: |
| PRINT_MACRO(_CPPLIB_VER); |
| PRINT_MACRO(_GLOBAL_USING); |
| PRINT_MACRO(_HAS_EXCEPTIONS); |
| PRINT_MACRO(_HAS_MEMBER_TEMPLATES_REBIND); |
| PRINT_MACRO(_HAS_TEMPLATE_PARTIAL_ORDERING); |
| // STLPort and generic SGI STL options: |
| PRINT_MACRO(__SGI_STL_NO_ARROW_OPERATOR); |
| PRINT_MACRO(__SGI_STL_OWN_IOSTREAMS); |
| PRINT_MACRO(__SGI_STL_PORT); |
| PRINT_MACRO(__STL_AUTOMATIC_TYPE_TRAITS); |
| PRINT_MACRO(__STL_BASE_MATCH_BUG); |
| PRINT_MACRO(__STL_BASE_TYPEDEF_BUG); |
| PRINT_MACRO(__STL_BASE_TYPEDEF_OUTSIDE_BUG); |
| PRINT_MACRO(__STL_BROKEN_USING_DIRECTIVE); |
| PRINT_MACRO(__STL_CONST_CONSTRUCTOR_BUG); |
| PRINT_MACRO(__STL_DEBUG); |
| PRINT_MACRO(__STL_DEBUG_ALLOC); |
| PRINT_MACRO(__STL_DEFAULT_CONSTRUCTOR_BUG); |
| PRINT_MACRO(__STL_DEFAULT_TYPE_PARAM); |
| PRINT_MACRO(__STL_DONT_REDEFINE_STD); |
| PRINT_MACRO(__STL_DONT_USE_BOOL_TYPEDEF); |
| PRINT_MACRO(__STL_HAS_NO_EXCEPTIONS); |
| PRINT_MACRO(__STL_HAS_NO_NAMESPACES); |
| PRINT_MACRO(__STL_HAS_NO_NEW_C_HEADERS); |
| PRINT_MACRO(__STL_HAS_NO_NEW_IOSTREAMS); |
| PRINT_MACRO(__STL_IMPORT_VENDOR_CSTD); |
| PRINT_MACRO(__STL_LIMITED_DEFAULT_TEMPLATES); |
| PRINT_MACRO(__STL_LINK_TIME_INSTANTIATION); |
| PRINT_MACRO(__STL_LONG_LONG); |
| PRINT_MACRO(__STL_LOOP_INLINE_PROBLEMS); |
| PRINT_MACRO(__STL_MEMBER_POINTER_PARAM_BUG); |
| PRINT_MACRO(__STL_NEED_EXPLICIT); |
| PRINT_MACRO(__STL_NEED_MUTABLE); |
| PRINT_MACRO(__STL_NEED_TYPENAME); |
| PRINT_MACRO(__STL_NESTED_TYPE_PARAM_BUG); |
| PRINT_MACRO(__STL_NO_BAD_ALLOC); |
| PRINT_MACRO(__STL_NO_BOOL); |
| PRINT_MACRO(__STL_NO_CLASS_PARTIAL_SPECIALIZATION); |
| PRINT_MACRO(__STL_NO_CSTD_FUNCTION_IMPORTS); |
| PRINT_MACRO(__STL_NO_DEFAULT_NON_TYPE_PARAM); |
| PRINT_MACRO(__STL_NO_EXCEPTION_HEADER); |
| PRINT_MACRO(__STL_NO_EXCEPTION_SPEC); |
| PRINT_MACRO(__STL_NO_EXCEPTIONS); |
| PRINT_MACRO(__STL_NO_EXPLICIT_FUNCTION_TMPL_ARGS); |
| PRINT_MACRO(__STL_NO_FRIEND_TEMPLATES); |
| PRINT_MACRO(__STL_NO_FUNCTION_TMPL_PARTIAL_ORDER); |
| PRINT_MACRO(__STL_NO_IOSTREAMS); |
| PRINT_MACRO(__STL_NO_LONG_DOUBLE); |
| PRINT_MACRO(__STL_NO_MEMBER_TEMPLATE_CLASSES); |
| PRINT_MACRO(__STL_NO_MEMBER_TEMPLATE_KEYWORD); |
| PRINT_MACRO(__STL_NO_MEMBER_TEMPLATES); |
| PRINT_MACRO(__STL_NO_METHOD_SPECIALIZATION); |
| PRINT_MACRO(__STL_NO_NAMESPACES); |
| PRINT_MACRO(__STL_NO_NEW_IOSTREAMS); |
| PRINT_MACRO(__STL_NO_NEW_NEW_HEADER); |
| PRINT_MACRO(__STL_NO_NEW_STYLE_CASTS); |
| PRINT_MACRO(__STL_NO_PARTIAL_SPECIALIZATION_SYNTAX); |
| PRINT_MACRO(__STL_NO_QUALIFIED_FRIENDS); |
| PRINT_MACRO(__STL_NO_RELOPS_NAMESPACE); |
| PRINT_MACRO(__STL_NO_SGI_IOSTREAMS); |
| PRINT_MACRO(__STL_NO_STATIC_TEMPLATE_DATA); |
| PRINT_MACRO(__STL_NO_TEMPLATE_CONVERSIONS); |
| PRINT_MACRO(__STL_NO_WCHAR_T); |
| PRINT_MACRO(__STL_NON_TYPE_TMPL_PARAM_BUG); |
| PRINT_MACRO(__STL_NONTEMPL_BASE_MATCH_BUG); |
| PRINT_MACRO(__STL_PARTIAL_SPEC_NEEDS_TEMPLATE_ARGS); |
| PRINT_MACRO(__STL_RAND48); |
| PRINT_MACRO(__STL_STATIC_ARRAY_BUG); |
| PRINT_MACRO(__STL_STATIC_CONST_INIT_BUG); |
| PRINT_MACRO(__STL_STATIC_CONST_INIT_BUG); |
| PRINT_MACRO(__STL_THROW_RETURN_BUG); |
| PRINT_MACRO(__STL_TRIVIAL_CONSTRUCTOR_BUG); |
| PRINT_MACRO(__STL_TRIVIAL_DESTRUCTOR_BUG); |
| PRINT_MACRO(__STL_UNINITIALIZABLE_PRIVATE); |
| PRINT_MACRO(__STL_USE_ABBREVS); |
| PRINT_MACRO(__STL_USE_DEFALLOC); |
| PRINT_MACRO(__STL_USE_MALLOC); |
| PRINT_MACRO(__STL_USE_NEW_C_HEADERS); |
| PRINT_MACRO(__STL_USE_NEW_IOSTREAMS); |
| PRINT_MACRO(__STL_USE_NEWALLOC); |
| PRINT_MACRO(__STL_USE_OWN_NAMESPACE); |
| PRINT_MACRO(__STL_USE_SGI_ALLOCATORS); |
| PRINT_MACRO(__STL_WCHAR_T_IS_USHORT); |
| PRINT_MACRO(__STL_WEAK_ATTRIBUTE); |
| PRINT_MACRO(__STL_YVALS_H); |
| PRINT_MACRO(_NOTHREADS); |
| PRINT_MACRO(_PTHREADS); |
| #if defined(__SGI_STL_PORT) && (__SGI_STL_PORT > 0x0400) |
| PRINT_MACRO(_STLP_AUTOMATIC_TYPE_TRAITS); |
| PRINT_MACRO(_STLP_BASE_MATCH_BUG); |
| PRINT_MACRO(_STLP_BASE_TYPEDEF_BUG); |
| PRINT_MACRO(_STLP_BASE_TYPEDEF_OUTSIDE_BUG); |
| PRINT_MACRO(_STLP_BROKEN_USING_DIRECTIVE); |
| PRINT_MACRO(_STLP_CONST_CONSTRUCTOR_BUG); |
| PRINT_MACRO(_STLP_DEBUG); |
| PRINT_MACRO(_STLP_DEBUG_ALLOC); |
| PRINT_MACRO(_STLP_DEFAULT_CONSTRUCTOR_BUG); |
| PRINT_MACRO(_STLP_DEFAULT_TYPE_PARAM); |
| PRINT_MACRO(_STLP_DONT_REDEFINE_STD); |
| PRINT_MACRO(_STLP_DONT_USE_BOOL_TYPEDEF); |
| PRINT_MACRO(_STLP_HAS_NO_EXCEPTIONS); |
| PRINT_MACRO(_STLP_HAS_NO_NAMESPACES); |
| PRINT_MACRO(_STLP_HAS_NO_NEW_C_HEADERS); |
| PRINT_MACRO(_STLP_HAS_NO_NEW_IOSTREAMS); |
| PRINT_MACRO(_STLP_IMPORT_VENDOR_CSTD); |
| PRINT_MACRO(_STLP_LIMITED_DEFAULT_TEMPLATES); |
| PRINT_MACRO(_STLP_LINK_TIME_INSTANTIATION); |
| PRINT_MACRO(_STLP_LONG_LONG); |
| PRINT_MACRO(_STLP_LOOP_INLINE_PROBLEMS); |
| PRINT_MACRO(_STLP_MEMBER_POINTER_PARAM_BUG); |
| PRINT_MACRO(_STLP_NEED_EXPLICIT); |
| PRINT_MACRO(_STLP_NEED_MUTABLE); |
| PRINT_MACRO(_STLP_NEED_TYPENAME); |
| PRINT_MACRO(_STLP_NESTED_TYPE_PARAM_BUG); |
| PRINT_MACRO(_STLP_NO_ARROW_OPERATOR); |
| PRINT_MACRO(_STLP_NO_BAD_ALLOC); |
| PRINT_MACRO(_STLP_NO_BOOL); |
| PRINT_MACRO(_STLP_NO_CLASS_PARTIAL_SPECIALIZATION); |
| PRINT_MACRO(_STLP_NO_CSTD_FUNCTION_IMPORTS); |
| PRINT_MACRO(_STLP_NO_DEFAULT_NON_TYPE_PARAM); |
| PRINT_MACRO(_STLP_NO_EXCEPTION_HEADER); |
| PRINT_MACRO(_STLP_NO_EXCEPTION_SPEC); |
| PRINT_MACRO(_STLP_NO_EXCEPTIONS); |
| PRINT_MACRO(_STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS); |
| PRINT_MACRO(_STLP_NO_FRIEND_TEMPLATES); |
| PRINT_MACRO(_STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER); |
| PRINT_MACRO(_STLP_NO_IOSTREAMS); |
| PRINT_MACRO(_STLP_NO_LONG_DOUBLE); |
| PRINT_MACRO(_STLP_NO_MEMBER_TEMPLATE_CLASSES); |
| PRINT_MACRO(_STLP_NO_MEMBER_TEMPLATE_KEYWORD); |
| PRINT_MACRO(_STLP_NO_MEMBER_TEMPLATES); |
| PRINT_MACRO(_STLP_NO_METHOD_SPECIALIZATION); |
| PRINT_MACRO(_STLP_NO_NAMESPACES); |
| PRINT_MACRO(_STLP_NO_NEW_IOSTREAMS); |
| PRINT_MACRO(_STLP_NO_NEW_NEW_HEADER); |
| PRINT_MACRO(_STLP_NO_NEW_STYLE_CASTS); |
| PRINT_MACRO(_STLP_NO_PARTIAL_SPECIALIZATION_SYNTAX); |
| PRINT_MACRO(_STLP_NO_QUALIFIED_FRIENDS); |
| PRINT_MACRO(_STLP_NO_RELOPS_NAMESPACE); |
| PRINT_MACRO(_STLP_NO_SGI_IOSTREAMS); |
| PRINT_MACRO(_STLP_NO_STATIC_TEMPLATE_DATA); |
| PRINT_MACRO(_STLP_NO_TEMPLATE_CONVERSIONS); |
| PRINT_MACRO(_STLP_NO_WCHAR_T); |
| PRINT_MACRO(_STLP_NON_TYPE_TMPL_PARAM_BUG); |
| PRINT_MACRO(_STLP_NONTEMPL_BASE_MATCH_BUG); |
| PRINT_MACRO(_STLP_OWN_IOSTREAMS); |
| PRINT_MACRO(_STLP_PARTIAL_SPEC_NEEDS_TEMPLATE_ARGS); |
| PRINT_MACRO(_STLP_RAND48); |
| PRINT_MACRO(_STLP_STATIC_ARRAY_BUG); |
| PRINT_MACRO(_STLP_STATIC_CONST_INIT_BUG); |
| PRINT_MACRO(_STLP_STATIC_CONST_INIT_BUG); |
| PRINT_MACRO(_STLP_THROW_RETURN_BUG); |
| PRINT_MACRO(_STLP_TRIVIAL_CONSTRUCTOR_BUG); |
| PRINT_MACRO(_STLP_TRIVIAL_DESTRUCTOR_BUG); |
| PRINT_MACRO(_STLP_UNINITIALIZABLE_PRIVATE); |
| PRINT_MACRO(_STLP_USE_ABBREVS); |
| PRINT_MACRO(_STLP_USE_DEFALLOC); |
| PRINT_MACRO(_STLP_USE_MALLOC); |
| PRINT_MACRO(_STLP_USE_NEW_C_HEADERS); |
| PRINT_MACRO(_STLP_USE_NEWALLOC); |
| PRINT_MACRO(_STLP_USE_OWN_NAMESPACE); |
| PRINT_MACRO(_STLP_USE_SGI_ALLOCATORS); |
| PRINT_MACRO(_STLP_WCHAR_T_IS_USHORT); |
| PRINT_MACRO(_STLP_WEAK_ATTRIBUTE); |
| PRINT_MACRO(_STLP_YVALS_H); |
| #endif |
| PRINT_MACRO(__GLIBCPP__); |
| PRINT_MACRO(_GLIBCPP_USE_WCHAR_T); |
| PRINT_MACRO(_GLIBCPP_VERSION); |
| PRINT_MACRO(__GLIBCXX__); |
| PRINT_MACRO(_GLIBCXX_USE_WCHAR_T); |
| PRINT_MACRO(_GLIBCXX_VERSION); |
| PRINT_MACRO(_GLIBCXX_USE_LONG_LONG); |
| PRINT_MACRO(_GLIBCXX_USE_NLS); |
| PRINT_MACRO(_GLIBCXX_USE_C99_MATH); |
| PRINT_MACRO(_GLIBCXX_USE_C99); |
| PRINT_MACRO(_GLIBCXX_CONCEPT_CHECKS); |
| PRINT_MACRO(_GLIBCXX_USE_LFS); |
| PRINT_MACRO(_GLIBCXX_SYMVER); |
| PRINT_MACRO(_GLIBCXX_MEM_LIMITS); |
| PRINT_MACRO(_GLIBCXX_HOSTED); |
| PRINT_MACRO(_GLIBCXX_SJLJ_EXCEPTIONS); |
| |
| // Modena C++ standard library |
| PRINT_MACRO(MSIPL_ANSI_HEADER); |
| PRINT_MACRO(MSIPL_BOOL_BUILTIN); |
| PRINT_MACRO(MSIPL_DEF_EXPLICIT); |
| PRINT_MACRO(MSIPL_DEF_TEMPARG); |
| PRINT_MACRO(MSIPL_EXPINST_ALLOWED); |
| PRINT_MACRO(MSIPL_EXPLICIT_FUNC_TEMPLATE_ARG); |
| PRINT_MACRO(MISPL_EXPLICIT_TEMPLATE_ARGUMENT); |
| PRINT_MACRO(MSIPL_FUNC_TEMPLATE_DEFARG); |
| PRINT_MACRO(MSIPL_MEMBER_TEMPLATE); |
| PRINT_MACRO(MSIPL_MULTITHREAD); |
| PRINT_MACRO(MSIPL_NON_TYPE_TEMPARG); |
| PRINT_MACRO(MSIPL_PARTIAL_TEMPL); |
| PRINT_MACRO(MSIPL_STATIC_CONST_INIT); |
| PRINT_MACRO(MSIPL_TEMPL_NEWSPEC); |
| PRINT_MACRO(MSIPL_TYPENAME); |
| PRINT_MACRO(MSIPL_USING_NAMESPACE); |
| PRINT_MACRO(MSIPL_WCHART); |
| } |
| |
| void print_platform_macros() |
| { |
| std::cout << "Detected Platform: " << BOOST_PLATFORM << std::endl; |
| // signedness: |
| PRINT_SIGN(char); |
| PRINT_SIGN(wchar_t); |
| // byte ordering: |
| PRINT_ORDER(short); |
| PRINT_ORDER(int); |
| PRINT_ORDER(long); |
| // sizes: |
| PRINT_EXPRESSION(sizeof(wchar_t)); |
| PRINT_EXPRESSION(sizeof(short)); |
| PRINT_EXPRESSION(sizeof(int)); |
| PRINT_EXPRESSION(sizeof(long)); |
| PRINT_EXPRESSION(sizeof(size_t)); |
| PRINT_EXPRESSION(sizeof(ptrdiff_t)); |
| PRINT_EXPRESSION(sizeof(void*)); |
| PRINT_EXPRESSION(sizeof(void(*)(void))); |
| PRINT_EXPRESSION(sizeof(float)); |
| PRINT_EXPRESSION(sizeof(double)); |
| PRINT_EXPRESSION(sizeof(long double)); |
| // limits: |
| PRINT_MACRO(CHAR_BIT); |
| PRINT_MACRO(CHAR_MAX); |
| PRINT_MACRO(WCHAR_MAX); |
| PRINT_MACRO(SHRT_MAX); |
| PRINT_MACRO(INT_MAX); |
| PRINT_MACRO(LONG_MAX); |
| PRINT_MACRO(LLONG_MAX); |
| PRINT_MACRO(LONG_LONG_MAX); |
| PRINT_MACRO(LONGLONG_MAX); |
| PRINT_MACRO(ULLONG_MAX); // <boost/cstdint.hpp> uses these, so we need to know them |
| PRINT_MACRO(ULONG_LONG_MAX); |
| PRINT_MACRO(ULONGLONG_MAX); |
| // general C99: |
| PRINT_MACRO(__STDC_IEC_559__); |
| PRINT_MACRO(__STDC_IEC_559_COMPLEX__); |
| PRINT_MACRO(__STDC_ISO_10646__); |
| // GNU: |
| PRINT_MACRO(__GLIBC__); |
| PRINT_MACRO(__GLIBC_MINOR__); |
| PRINT_MACRO(__GNU_LIBRARY__); |
| PRINT_MACRO(_BSD_SOURCE); |
| PRINT_MACRO(_GNU_SOURCE); |
| PRINT_MACRO(_ISOC99_SOURCE); |
| PRINT_MACRO(_ISOC9X_SOURCE); |
| PRINT_MACRO(_LARGEFILE_SOURCE); |
| PRINT_MACRO(_LARGEFILE64_SOURCE); |
| PRINT_MACRO(_SVID_SOURCE); |
| PRINT_MACRO(_THREAD_SAFE); |
| PRINT_MACRO(_XOPEN_SOURCE_EXTENDED); |
| PRINT_MACRO(XPG); |
| // POSIX: |
| PRINT_MACRO(_POSIX_ADVISORY_INFO); |
| PRINT_MACRO(_POSIX_ASYNCHRONOUS_IO); |
| PRINT_MACRO(_POSIX_BARRIERS); |
| PRINT_MACRO(_POSIX_C_SOURCE); |
| PRINT_MACRO(_POSIX_CHOWN_RESTRICTED); |
| PRINT_MACRO(_POSIX_CLOCK_SELECTION); |
| PRINT_MACRO(_POSIX_CPUTIME); |
| PRINT_MACRO(_POSIX_FSYNC); |
| PRINT_MACRO(_POSIX_JOB_CONTROL); |
| PRINT_MACRO(_POSIX_MAPPED_FILES); |
| PRINT_MACRO(_POSIX_MEMLOCK); |
| PRINT_MACRO(_POSIX_MEMLOCK_RANGE); |
| PRINT_MACRO(_POSIX_MEMORY_PROTECTION); |
| PRINT_MACRO(_POSIX_MESSAGE_PASSING); |
| PRINT_MACRO(_POSIX_MONOTONIC_CLOCK); |
| PRINT_MACRO(_POSIX_NO_TRUNC); |
| PRINT_MACRO(_POSIX_PRIORITIZED_IO); |
| PRINT_MACRO(_POSIX_PRIORITY_SCHEDULING); |
| PRINT_MACRO(_POSIX_RAW_SOCKETS); |
| PRINT_MACRO(_POSIX_READER_WRITER_LOCKS); |
| PRINT_MACRO(_POSIX_REALTIME_SIGNALS); |
| PRINT_MACRO(_POSIX_REGEXP); |
| PRINT_MACRO(_POSIX_SAVED_IDS); |
| PRINT_MACRO(_POSIX_SEMAPHORES); |
| PRINT_MACRO(_POSIX_SHARED_MEMORY_OBJECTS); |
| PRINT_MACRO(_POSIX_SHELL); |
| PRINT_MACRO(_POSIX_SOURCE); |
| PRINT_MACRO(_POSIX_SPAWN); |
| PRINT_MACRO(_POSIX_SPIN_LOCKS); |
| PRINT_MACRO(_POSIX_SPORADIC_SERVER); |
| PRINT_MACRO(_POSIX_SYNCHRONIZED_IO); |
| PRINT_MACRO(_POSIX_THREAD_ATTR_STACKADDR); |
| PRINT_MACRO(_POSIX_THREAD_ATTR_STACKSIZE); |
| PRINT_MACRO(_POSIX_THREAD_CPUTIME); |
| PRINT_MACRO(_POSIX_THREAD_PRIO_INHERIT); |
| PRINT_MACRO(_POSIX_THREAD_PRIO_PROTECT); |
| PRINT_MACRO(_POSIX_THREAD_PRIORITY_SCHEDULING); |
| PRINT_MACRO(_POSIX_THREAD_PROCESS_SHARED); |
| PRINT_MACRO(_POSIX_THREAD_SAFE_FUNCTIONS); |
| PRINT_MACRO(_POSIX_THREAD_SPORADIC_SERVER); |
| PRINT_MACRO(_POSIX_THREADS); |
| PRINT_MACRO(_POSIX_TIMEOUTS); |
| PRINT_MACRO(_POSIX_TIMERS); |
| PRINT_MACRO(_POSIX_TRACE); |
| PRINT_MACRO(_POSIX_TRACE_EVENT_FILTER); |
| PRINT_MACRO(_POSIX_TRACE_INHERIT); |
| PRINT_MACRO(_POSIX_TRACE_LOG); |
| PRINT_MACRO(_POSIX_TYPED_MEMORY_OBJECTS); |
| PRINT_MACRO(_POSIX_VDISABLE); |
| PRINT_MACRO(_POSIX_VERSION); |
| PRINT_MACRO(_POSIX2_C_BIND); |
| PRINT_MACRO(_POSIX2_C_DEV); |
| PRINT_MACRO(_POSIX2_CHAR_TERM); |
| PRINT_MACRO(_POSIX2_FORT_DEV); |
| PRINT_MACRO(_POSIX2_FORT_RUN); |
| PRINT_MACRO(_POSIX2_LOCALEDEF); |
| PRINT_MACRO(_POSIX2_PBS); |
| PRINT_MACRO(_POSIX2_PBS_ACCOUNTING); |
| PRINT_MACRO(_POSIX2_PBS_CHECKPOINT); |
| PRINT_MACRO(_POSIX2_PBS_LOCATE); |
| PRINT_MACRO(_POSIX2_PBS_MESSAGE); |
| PRINT_MACRO(_POSIX2_PBS_TRACK); |
| PRINT_MACRO(_POSIX2_SW_DEV); |
| PRINT_MACRO(_POSIX2_UPE); |
| PRINT_MACRO(_POSIX2_VERSION); |
| PRINT_MACRO(_V6_ILP32_OFF32); |
| PRINT_MACRO(_V6_ILP32_OFFBIG); |
| PRINT_MACRO(_V6_LP64_OFF64); |
| PRINT_MACRO(_V6_LPBIG_OFFBIG); |
| PRINT_MACRO(_XBS5_ILP32_OFF32); |
| PRINT_MACRO(_XBS5_ILP32_OFFBIG); |
| PRINT_MACRO(_XBS5_LP64_OFF64); |
| PRINT_MACRO(_XBS5_LPBIG_OFFBIG); |
| PRINT_MACRO(_XOPEN_CRYPT); |
| PRINT_MACRO(_XOPEN_ENH_I18N); |
| PRINT_MACRO(_XOPEN_LEGACY); |
| PRINT_MACRO(_XOPEN_REALTIME); |
| PRINT_MACRO(_XOPEN_REALTIME_THREADS); |
| PRINT_MACRO(_XOPEN_SHM); |
| PRINT_MACRO(_XOPEN_SOURCE); |
| PRINT_MACRO(_XOPEN_STREAMS); |
| PRINT_MACRO(_XOPEN_UNIX); |
| PRINT_MACRO(_XOPEN_VERSION); |
| // Misc: |
| PRINT_MACRO(__USE_BSD); |
| PRINT_MACRO(_FILE_OFFSET_BITS); |
| } |
| |
| void print_boost_macros() |
| { |
| std::cout << "Boost version " << BOOST_STRINGIZE(BOOST_VERSION) << std::endl; |
| // config setup macros first: |
| PRINT_MACRO(BOOST_USER_CONFIG); |
| PRINT_MACRO(BOOST_COMPILER_CONFIG); |
| PRINT_MACRO(BOOST_STDLIB_CONFIG); |
| PRINT_MACRO(BOOST_PLATFORM_CONFIG); |
| PRINT_MACRO(BOOST_NO_CONFIG); |
| PRINT_MACRO(BOOST_NO_USER_CONFIG); |
| PRINT_MACRO(BOOST_NO_COMPILER_CONFIG); |
| PRINT_MACRO(BOOST_NO_STDLIB_CONFIG); |
| PRINT_MACRO(BOOST_NO_PLATFORM_CONFIG); |
| // then defect and feature macros: |
| PRINT_MACRO(BOOST_DISABLE_THREADS); |
| PRINT_MACRO(BOOST_DISABLE_WIN32); |
| PRINT_MACRO(BOOST_HAS_THREADS); |
| |
| // BEGIN GENERATED BLOCK DO NOT EDIT THIS!!!!!! |
| PRINT_MACRO(BOOST_BCB_PARTIAL_SPECIALIZATION_BUG); |
| PRINT_MACRO(BOOST_DEDUCED_TYPENAME); |
| PRINT_MACRO(BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL); |
| PRINT_MACRO(BOOST_HAS_BETHREADS); |
| PRINT_MACRO(BOOST_HAS_CLOCK_GETTIME); |
| PRINT_MACRO(BOOST_HAS_CONCEPTS); |
| PRINT_MACRO(BOOST_HAS_DIRENT_H); |
| PRINT_MACRO(BOOST_HAS_EXPM1); |
| PRINT_MACRO(BOOST_HAS_FTIME); |
| PRINT_MACRO(BOOST_HAS_GETTIMEOFDAY); |
| PRINT_MACRO(BOOST_HAS_HASH); |
| PRINT_MACRO(BOOST_HAS_LOG1P); |
| PRINT_MACRO(BOOST_HAS_LONG_LONG); |
| PRINT_MACRO(BOOST_HAS_MACRO_USE_FACET); |
| PRINT_MACRO(BOOST_HAS_MS_INT64); |
| PRINT_MACRO(BOOST_HAS_NANOSLEEP); |
| PRINT_MACRO(BOOST_HAS_NL_TYPES_H); |
| PRINT_MACRO(BOOST_HAS_NRVO); |
| PRINT_MACRO(BOOST_HAS_PARTIAL_STD_ALLOCATOR); |
| PRINT_MACRO(BOOST_HAS_PTHREADS); |
| PRINT_MACRO(BOOST_HAS_PTHREAD_DELAY_NP); |
| PRINT_MACRO(BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE); |
| PRINT_MACRO(BOOST_HAS_PTHREAD_YIELD); |
| PRINT_MACRO(BOOST_HAS_RVALUE_REFS); |
| PRINT_MACRO(BOOST_HAS_SCHED_YIELD); |
| PRINT_MACRO(BOOST_HAS_SGI_TYPE_TRAITS); |
| PRINT_MACRO(BOOST_HAS_SIGACTION); |
| PRINT_MACRO(BOOST_HAS_SLIST); |
| PRINT_MACRO(BOOST_HAS_STATIC_ASSERT); |
| PRINT_MACRO(BOOST_HAS_STDINT_H); |
| PRINT_MACRO(BOOST_HAS_STLP_USE_FACET); |
| PRINT_MACRO(BOOST_HAS_TR1_ARRAY); |
| PRINT_MACRO(BOOST_HAS_TR1_BIND); |
| PRINT_MACRO(BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG); |
| PRINT_MACRO(BOOST_HAS_TR1_COMPLEX_OVERLOADS); |
| PRINT_MACRO(BOOST_HAS_TR1_FUNCTION); |
| PRINT_MACRO(BOOST_HAS_TR1_HASH); |
| PRINT_MACRO(BOOST_HAS_TR1_MEM_FN); |
| PRINT_MACRO(BOOST_HAS_TR1_RANDOM); |
| PRINT_MACRO(BOOST_HAS_TR1_REFERENCE_WRAPPER); |
| PRINT_MACRO(BOOST_HAS_TR1_REGEX); |
| PRINT_MACRO(BOOST_HAS_TR1_RESULT_OF); |
| PRINT_MACRO(BOOST_HAS_TR1_SHARED_PTR); |
| PRINT_MACRO(BOOST_HAS_TR1_TUPLE); |
| PRINT_MACRO(BOOST_HAS_TR1_TYPE_TRAITS); |
| PRINT_MACRO(BOOST_HAS_TR1_UNORDERED_MAP); |
| PRINT_MACRO(BOOST_HAS_TR1_UNORDERED_SET); |
| PRINT_MACRO(BOOST_HAS_TR1_UTILITY); |
| PRINT_MACRO(BOOST_HAS_TWO_ARG_USE_FACET); |
| PRINT_MACRO(BOOST_HAS_UNISTD_H); |
| PRINT_MACRO(BOOST_HAS_VARIADIC_TMPL); |
| PRINT_MACRO(BOOST_HAS_WINTHREADS); |
| PRINT_MACRO(BOOST_MSVC6_MEMBER_TEMPLATES); |
| PRINT_MACRO(BOOST_MSVC_STD_ITERATOR); |
| PRINT_MACRO(BOOST_NO_0X_HDR_ARRAY); |
| PRINT_MACRO(BOOST_NO_0X_HDR_CHRONO); |
| PRINT_MACRO(BOOST_NO_0X_HDR_CODECVT); |
| PRINT_MACRO(BOOST_NO_0X_HDR_CONCEPTS); |
| PRINT_MACRO(BOOST_NO_0X_HDR_CONDITION_VARIABLE); |
| PRINT_MACRO(BOOST_NO_0X_HDR_CONTAINER_CONCEPTS); |
| PRINT_MACRO(BOOST_NO_0X_HDR_FORWARD_LIST); |
| PRINT_MACRO(BOOST_NO_0X_HDR_FUTURE); |
| PRINT_MACRO(BOOST_NO_0X_HDR_INITIALIZER_LIST); |
| PRINT_MACRO(BOOST_NO_0X_HDR_ITERATOR_CONCEPTS); |
| PRINT_MACRO(BOOST_NO_0X_HDR_MEMORY_CONCEPTS); |
| PRINT_MACRO(BOOST_NO_0X_HDR_MUTEX); |
| PRINT_MACRO(BOOST_NO_0X_HDR_RANDOM); |
| PRINT_MACRO(BOOST_NO_0X_HDR_RATIO); |
| PRINT_MACRO(BOOST_NO_0X_HDR_REGEX); |
| PRINT_MACRO(BOOST_NO_0X_HDR_SYSTEM_ERROR); |
| PRINT_MACRO(BOOST_NO_0X_HDR_THREAD); |
| PRINT_MACRO(BOOST_NO_0X_HDR_TUPLE); |
| PRINT_MACRO(BOOST_NO_0X_HDR_TYPEINDEX); |
| PRINT_MACRO(BOOST_NO_0X_HDR_TYPE_TRAITS); |
| PRINT_MACRO(BOOST_NO_0X_HDR_UNORDERED_MAP); |
| PRINT_MACRO(BOOST_NO_0X_HDR_UNORDERED_SET); |
| PRINT_MACRO(BOOST_NO_ADL_BARRIER); |
| PRINT_MACRO(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP); |
| PRINT_MACRO(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS); |
| PRINT_MACRO(BOOST_NO_AUTO_DECLARATIONS); |
| PRINT_MACRO(BOOST_NO_AUTO_MULTIDECLARATIONS); |
| PRINT_MACRO(BOOST_NO_AUTO_PTR); |
| PRINT_MACRO(BOOST_NO_CHAR16_T); |
| PRINT_MACRO(BOOST_NO_CHAR32_T); |
| PRINT_MACRO(BOOST_NO_COMPLETE_VALUE_INITIALIZATION); |
| PRINT_MACRO(BOOST_NO_CONCEPTS); |
| PRINT_MACRO(BOOST_NO_CONSTEXPR); |
| PRINT_MACRO(BOOST_NO_CTYPE_FUNCTIONS); |
| PRINT_MACRO(BOOST_NO_CV_SPECIALIZATIONS); |
| PRINT_MACRO(BOOST_NO_CV_VOID_SPECIALIZATIONS); |
| PRINT_MACRO(BOOST_NO_CWCHAR); |
| PRINT_MACRO(BOOST_NO_CWCTYPE); |
| PRINT_MACRO(BOOST_NO_DECLTYPE); |
| PRINT_MACRO(BOOST_NO_DEFAULTED_FUNCTIONS); |
| PRINT_MACRO(BOOST_NO_DELETED_FUNCTIONS); |
| PRINT_MACRO(BOOST_NO_DEPENDENT_NESTED_DERIVATIONS); |
| PRINT_MACRO(BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS); |
| PRINT_MACRO(BOOST_NO_EXCEPTIONS); |
| PRINT_MACRO(BOOST_NO_EXCEPTION_STD_NAMESPACE); |
| PRINT_MACRO(BOOST_NO_EXPLICIT_CONVERSION_OPERATORS); |
| PRINT_MACRO(BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS); |
| PRINT_MACRO(BOOST_NO_EXTERN_TEMPLATE); |
| PRINT_MACRO(BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS); |
| PRINT_MACRO(BOOST_NO_FUNCTION_TEMPLATE_ORDERING); |
| PRINT_MACRO(BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS); |
| PRINT_MACRO(BOOST_NO_INCLASS_MEMBER_INITIALIZATION); |
| PRINT_MACRO(BOOST_NO_INITIALIZER_LISTS); |
| PRINT_MACRO(BOOST_NO_INTEGRAL_INT64_T); |
| PRINT_MACRO(BOOST_NO_INTRINSIC_WCHAR_T); |
| PRINT_MACRO(BOOST_NO_IOSFWD); |
| PRINT_MACRO(BOOST_NO_IOSTREAM); |
| PRINT_MACRO(BOOST_NO_IS_ABSTRACT); |
| PRINT_MACRO(BOOST_NO_LAMBDAS); |
| PRINT_MACRO(BOOST_NO_LIMITS); |
| PRINT_MACRO(BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS); |
| PRINT_MACRO(BOOST_NO_LONG_LONG); |
| PRINT_MACRO(BOOST_NO_LONG_LONG_NUMERIC_LIMITS); |
| PRINT_MACRO(BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS); |
| PRINT_MACRO(BOOST_NO_MEMBER_TEMPLATES); |
| PRINT_MACRO(BOOST_NO_MEMBER_TEMPLATE_FRIENDS); |
| PRINT_MACRO(BOOST_NO_MEMBER_TEMPLATE_KEYWORD); |
| PRINT_MACRO(BOOST_NO_MS_INT64_NUMERIC_LIMITS); |
| PRINT_MACRO(BOOST_NO_NESTED_FRIENDSHIP); |
| PRINT_MACRO(BOOST_NO_NULLPTR); |
| PRINT_MACRO(BOOST_NO_NUMERIC_LIMITS_LOWEST); |
| PRINT_MACRO(BOOST_NO_OPERATORS_IN_NAMESPACE); |
| PRINT_MACRO(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS); |
| PRINT_MACRO(BOOST_NO_POINTER_TO_MEMBER_CONST); |
| PRINT_MACRO(BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS); |
| PRINT_MACRO(BOOST_NO_PRIVATE_IN_AGGREGATE); |
| PRINT_MACRO(BOOST_NO_RAW_LITERALS); |
| PRINT_MACRO(BOOST_NO_RTTI); |
| PRINT_MACRO(BOOST_NO_RVALUE_REFERENCES); |
| PRINT_MACRO(BOOST_NO_SCOPED_ENUMS); |
| PRINT_MACRO(BOOST_NO_SFINAE); |
| PRINT_MACRO(BOOST_NO_SFINAE_EXPR); |
| PRINT_MACRO(BOOST_NO_STATIC_ASSERT); |
| PRINT_MACRO(BOOST_NO_STDC_NAMESPACE); |
| PRINT_MACRO(BOOST_NO_STD_ALLOCATOR); |
| PRINT_MACRO(BOOST_NO_STD_DISTANCE); |
| PRINT_MACRO(BOOST_NO_STD_ITERATOR); |
| PRINT_MACRO(BOOST_NO_STD_ITERATOR_TRAITS); |
| PRINT_MACRO(BOOST_NO_STD_LOCALE); |
| PRINT_MACRO(BOOST_NO_STD_MESSAGES); |
| PRINT_MACRO(BOOST_NO_STD_MIN_MAX); |
| PRINT_MACRO(BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN); |
| PRINT_MACRO(BOOST_NO_STD_TYPEINFO); |
| PRINT_MACRO(BOOST_NO_STD_UNORDERED); |
| PRINT_MACRO(BOOST_NO_STD_USE_FACET); |
| PRINT_MACRO(BOOST_NO_STD_WSTREAMBUF); |
| PRINT_MACRO(BOOST_NO_STD_WSTRING); |
| PRINT_MACRO(BOOST_NO_STRINGSTREAM); |
| PRINT_MACRO(BOOST_NO_SWPRINTF); |
| PRINT_MACRO(BOOST_NO_TEMPLATED_IOSTREAMS); |
| PRINT_MACRO(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS); |
| PRINT_MACRO(BOOST_NO_TEMPLATE_ALIASES); |
| PRINT_MACRO(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION); |
| PRINT_MACRO(BOOST_NO_TEMPLATE_TEMPLATES); |
| PRINT_MACRO(BOOST_NO_TWO_PHASE_NAME_LOOKUP); |
| PRINT_MACRO(BOOST_NO_TYPEID); |
| PRINT_MACRO(BOOST_NO_TYPENAME_WITH_CTOR); |
| PRINT_MACRO(BOOST_NO_UNICODE_LITERALS); |
| PRINT_MACRO(BOOST_NO_UNREACHABLE_RETURN_DETECTION); |
| PRINT_MACRO(BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE); |
| PRINT_MACRO(BOOST_NO_USING_TEMPLATE); |
| PRINT_MACRO(BOOST_NO_VARIADIC_MACROS); |
| PRINT_MACRO(BOOST_NO_VARIADIC_TEMPLATES); |
| PRINT_MACRO(BOOST_NO_VOID_RETURNS); |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| // END GENERATED BLOCK |
| |
| PRINT_MACRO(BOOST_INTEL); |
| PRINT_MACRO(BOOST_MSVC); |
| PRINT_MACRO(BOOST_STD_EXTENSION_NAMESPACE); |
| PRINT_MACRO(BOOST_UNREACHABLE_RETURN(0)); |
| } |
| |
| void print_separator() |
| { |
| std::cout << |
| "\n\n*********************************************************************\n\n"; |
| } |
| |
| int main() |
| { |
| |
| // boost compiler workaround defines |
| print_compiler_macros(); |
| print_separator(); |
| print_stdlib_macros(); |
| print_separator(); |
| print_platform_macros(); |
| print_separator(); |
| print_boost_macros(); |
| |
| return 0; |
| } |