Sorry to say that the output is now incorrect. A2 instead of A 2. Checking the preprocessor output for this gives

/* Unit1.cpp 9: */int main() {
/* Unit1.cpp 10: */std::cout << "A 2" << &std::endl;
/* Unit1.cpp 11: */return 0;

which is again correct. This is strange since I thought that bcc32 was just supposed to call cpp32 for the pre-processing. I can submit this as a bug to Borlands QualityCentral if you like (but don't hold your breath).

Cheers

Russell

Paul Mensonides wrote:
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



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

Reply via email to