4 #include <boost/preprocessor/stringize.hpp>
6 static unsigned int indent
= 4;
7 static unsigned int width
= 40;
12 void print_separator()
15 "\n\n*********************************************************************\n\n";
18 void print_macro(const char* name
, const char* value
)
20 // if name == value+1 then then macro is not defined,
21 // in which case we don't print anything:
22 if(0 != strcmp(name
, value
+1))
24 for(unsigned i
= 0; i
< indent
; ++i
) std::cout
.put(' ');
25 std::cout
<< std::setw(width
);
26 cout
.setf(istream::left
, istream::adjustfield
);
31 std::cout
<< value
<< "\n";
35 // macro is defined but has no value:
36 std::cout
<< " [no value]\n";
41 #define PRINT_MACRO(X) print_macro(#X, BOOST_PP_STRINGIZE(=X))
48 PRINT_MACRO(__GCCXML__
);
49 PRINT_MACRO(__WAVE__
);
50 PRINT_MACRO(__MWERKS__
);
52 PRINT_MACRO(_MSC_VER
);
53 PRINT_MACRO(__clang__
);
55 PRINT_MACRO(__BORLANDC__
);
56 PRINT_MACRO(__IBMC__
);
57 PRINT_MACRO(__IBMCPP__
);
58 PRINT_MACRO(__SUNPRO_CC
);
59 PRINT_MACRO(__CUDACC__
);
60 PRINT_MACRO(__PATHSCALE__
);
61 PRINT_MACRO(__CODEGEARC__
);
62 PRINT_MACRO(__HP_aCC
);
66 PRINT_MACRO(__INTEL_COMPILER
);
67 PRINT_MACRO(__GNUC__
);
68 PRINT_MACRO(__GXX_EXPERIMENTAL_CXX0X__
);
72 PRINT_MACRO(__cplusplus
);
73 PRINT_MACRO(__STDC_VERSION__
);
74 PRINT_MACRO(__EDG_VERSION__
);
75 PRINT_MACRO(__INTELLISENSE__
);
76 PRINT_MACRO(__WAVE_HAS_VARIADICS__
);
80 PRINT_MACRO(BOOST_PP_CONFIG_ERRORS
);
81 PRINT_MACRO(BOOST_PP_CONFIG_EXTENDED_LINE_INFO
);
82 PRINT_MACRO(BOOST_PP_CONFIG_FLAGS());
83 PRINT_MACRO(BOOST_PP_VARIADICS
);
84 PRINT_MACRO(BOOST_PP_VARIADICS_MSVC
);