Greetings,
I was wondering if
the following can be done with Boost Preprocessor. Given a list of
preprocessor macro names, write a simple program that prints whether each macro
is defined and its value if it is defined.
In particular, I'd
like to know if the following example program could be reduced/simplified with
Boost:
#include
<iostream>
using
namespace std;
#define
STRING(x) #x
#define STRINGIZE(x) STRING(x)
#define IS "
is "
#define NOT "not "
#define DEFINED "defined."
#define VALUE
" Its value is "
extern
int
main () {
#if defined
__mips
cout << STRING(__mips) IS
DEFINED;
cout << VALUE STRINGIZE(__mips) <<
endl;
#else
cout << STRING(__mips) IS NOT DEFINED
<< endl;
#endif
#if defined
__unix
cout << STRING(__unix) IS
DEFINED;
cout << VALUE STRINGIZE(__unix) <<
endl;
#else
cout << STRING(__unix) IS NOT DEFINED
<< endl;
#endif
#if defined
__sgi
cout << STRING(__sgi) IS
DEFINED;
cout << VALUE STRINGIZE(__sgi) <<
endl;
#else
cout << STRING(__sgi) IS NOT DEFINED
<< endl;
#endif
#if defined
_COMPILER_VERSION
cout << STRING(_COMPILER_VERSION)
IS DEFINED;
cout << VALUE
STRINGIZE(_COMPILER_VERSION) << endl;
#else
cout
<< STRING(_COMPILER_VERSION) IS NOT DEFINED <<
endl;
#endif
#if
defined __GNUC__
cout << STRING(__GNUC__) IS
DEFINED;
cout << VALUE STRINGIZE(__GNUC__) <<
endl;
#else
cout << STRING(__GNUC__) IS NOT
DEFINED << endl;
#endif
return 0;
}
Thanks,
Eric.