Russell Hind wrote:

>> #define A() 1
>> #define B(m) m 2
>>
>> B(A)
>>
>
> I've run the above through the preprocessor and heres the output
>
> /* Unit1.cpp 1: */
> /* Unit1.cpp 2: */
> /* Unit1.cpp 3: */
> /* Unit1.cpp 4: */A 2
>
> Tested using the preprocess option with BCB6Pro Update 4.  This looks
> like what you were hoping for.  If you'd like me to test anything else
> then just let me know.

Thanks Russell.

What happens if you compile it all the way, i.e. with a compileable example:

#include <iostream>

#define A() 1
#define B(m) m 2

#define STR(x) STR_D(x)
#define STR_D(x) #x

int main() {
    std::cout << STR(B(A)) << &std::endl;
    return 0;
}

When this program is executed, it should output "A 2", not "A2".

The reason that I ask is that the only thing I have is the free command line
tools.  The included preprocessor, cpp32.exe, produces the correct output.  The
compiler proper, bcc32.exe, does not.  In other words, the behavior is/was
different with the separate preprocessor vs. the "integrated" preprocessor.

Regards,
Paul Mensonides

_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Reply via email to