📄 config_info.cpp
字号:
// 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.
#include <boost/config.hpp>
#include <boost/version.hpp>
#include <iostream>
#include <iomanip>
#include <string.h>
#include <limits.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 * i) << (CHAR_BIT * 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(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(_MT);
PRINT_MACRO(_NATIVE_WCHAR_T_DEFINED);
// GNUC options:
PRINT_MACRO(__GNUC__);
PRINT_MACRO(__GNUC_MINOR__);
PRINT_MACRO(__STDC_VERSION__);
PRINT_MACRO(__GNUG__);
PRINT_MACRO(__STRICT_ANSI__);
PRINT_MACRO(__VERSION__);
PRINT_MACRO(__OPTIMIZE__);
PRINT_MACRO(__CHAR_UNSIGNED__);
PRINT_MACRO(__REGISTER_PREFIX__);
PRINT_MACRO(__USER_LABEL_PREFIX__);
PRINT_MACRO(__INTEL__);
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);
// 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);
// 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);
// misc compilers not covered so far:
PRINT_MACRO(__ICC);
PRINT_MACRO(__ICL);
PRINT_MACRO(__ECC);
PRINT_MACRO(__INTEL_COMPILER);
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__);
}
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);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -