
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.