]>
Commit | Line | Data |
---|---|---|
92f5a8d4 TL |
1 | # /* ************************************************************************** |
2 | # * * | |
3 | # * (C) Copyright Edward Diener 2014,2019. | |
4 | # * Distributed under the Boost Software License, Version 1.0. (See | |
5 | # * accompanying file LICENSE_1_0.txt or copy at | |
6 | # * http://www.boost.org/LICENSE_1_0.txt) | |
7 | # * * | |
8 | # ************************************************************************** */ | |
9 | # | |
10 | # /* See http://www.boost.org for most recent version. */ | |
11 | # | |
b32b8144 FG |
12 | #include <iostream> |
13 | #include <iomanip> | |
14 | #include <string.h> | |
15 | #include <boost/preprocessor/stringize.hpp> | |
92f5a8d4 | 16 | #include <boost/preprocessor/variadic/has_opt.hpp> |
b32b8144 FG |
17 | |
18 | static unsigned int indent = 4; | |
19 | static unsigned int width = 40; | |
20 | ||
21 | using std::cout; | |
22 | using std::istream; | |
23 | ||
24 | void print_separator() | |
25 | { | |
26 | std::cout << | |
27 | "\n\n*********************************************************************\n\n"; | |
28 | } | |
29 | ||
30 | void print_macro(const char* name, const char* value) | |
31 | { | |
32 | // if name == value+1 then then macro is not defined, | |
33 | // in which case we don't print anything: | |
34 | if(0 != strcmp(name, value+1)) | |
35 | { | |
36 | for(unsigned i = 0; i < indent; ++i) std::cout.put(' '); | |
37 | std::cout << std::setw(width); | |
38 | cout.setf(istream::left, istream::adjustfield); | |
39 | std::cout << name; | |
40 | if(value[1]) | |
41 | { | |
42 | // macro has a value: | |
43 | std::cout << value << "\n"; | |
44 | } | |
45 | else | |
46 | { | |
47 | // macro is defined but has no value: | |
48 | std::cout << " [no value]\n"; | |
49 | } | |
50 | } | |
51 | } | |
52 | ||
53 | #define PRINT_MACRO(X) print_macro(#X, BOOST_PP_STRINGIZE(=X)) | |
54 | ||
55 | void print_macros() | |
56 | { | |
57 | ||
58 | print_separator(); | |
59 | ||
60 | PRINT_MACRO(__GCCXML__); | |
61 | PRINT_MACRO(__WAVE__); | |
62 | PRINT_MACRO(__MWERKS__); | |
63 | PRINT_MACRO(__EDG__); | |
64 | PRINT_MACRO(_MSC_VER); | |
65 | PRINT_MACRO(__clang__); | |
66 | PRINT_MACRO(__DMC__); | |
67 | PRINT_MACRO(__BORLANDC__); | |
68 | PRINT_MACRO(__IBMC__); | |
69 | PRINT_MACRO(__IBMCPP__); | |
70 | PRINT_MACRO(__SUNPRO_CC); | |
71 | PRINT_MACRO(__CUDACC__); | |
72 | PRINT_MACRO(__PATHSCALE__); | |
73 | PRINT_MACRO(__CODEGEARC__); | |
74 | PRINT_MACRO(__HP_aCC); | |
75 | PRINT_MACRO(__SC__); | |
76 | PRINT_MACRO(__MRC__); | |
77 | PRINT_MACRO(__PGI); | |
78 | PRINT_MACRO(__INTEL_COMPILER); | |
79 | PRINT_MACRO(__GNUC__); | |
80 | PRINT_MACRO(__GXX_EXPERIMENTAL_CXX0X__); | |
81 | ||
82 | print_separator(); | |
83 | ||
84 | PRINT_MACRO(__cplusplus); | |
85 | PRINT_MACRO(__STDC_VERSION__); | |
86 | PRINT_MACRO(__EDG_VERSION__); | |
87 | PRINT_MACRO(__INTELLISENSE__); | |
88 | PRINT_MACRO(__WAVE_HAS_VARIADICS__); | |
89 | ||
90 | print_separator(); | |
91 | ||
92 | PRINT_MACRO(BOOST_PP_CONFIG_ERRORS); | |
93 | PRINT_MACRO(BOOST_PP_CONFIG_EXTENDED_LINE_INFO); | |
94 | PRINT_MACRO(BOOST_PP_CONFIG_FLAGS()); | |
b32b8144 | 95 | PRINT_MACRO(BOOST_PP_VARIADICS_MSVC); |
92f5a8d4 | 96 | PRINT_MACRO(BOOST_PP_VARIADIC_HAS_OPT()); |
b32b8144 FG |
97 | } |
98 | ||
99 | int main() | |
100 | { | |
101 | ||
102 | print_macros(); | |
103 | ||
104 | return 0; | |
105 | } |