JCR wrote:
I need to write somethign like
if WINDOWS
do that
if MAC
do this
In that case, I suggest you write something like:
#if defined WINDOWS
// do thing one
#elif defined MAC
// do thing two
#elif defined OS_370
// do thing three
#else
// unsupported OS; do nothing
#endif
Any Macro that can do the job?
A macro, by itself, is just one piece of text which is
replaced with another by the preprocessor. To get the above
scheme to work, you'll have to define "WINDOWS", "MAC", etc.
in your compiler's settings for the various configurations for
your program. In Visual Studio, use the per-configuration
project settings to do this. ("Preprocessor" tab.) For other
compilers, consult your manual.
Should it be compiler specific?
Macros are not compiler specific, no. Their behavior is defined
by the C and C++ standards. For more info, read ISO/IEC-14882.
You can buy a copy from ANSI over the web for $30:
http://webstore.ansi.org/ansidocstore/product.asp?sku=INCITS%2FISO%2FIEC+14882%2D2003
Look in chapter 16, "Preprocessing Directives".
Details of how your compiler USES macros are compiler-specific,
though. Read your compiler's manual for more.
identifying what compiler is being used. For VC++, see the following
Note especially, _WIN32, _WIN64 and _MSC_VER.