Using the #if pre-processor directive to do different things for x64 builds
I'd just about finished writing an answer for a question on Stack Overflow when the poster deleted it, so I thought I'd drop the answer here instead.
The question asked was essentially:
How can I swap between two different structs depending on whether my application has been compiled as x86 or x64
Here's my answer:
You could use the #if pre-processor directive to achieve this. Here's a standalone example of using this:
using System;
namespace IfTest
{
class Program
{
static void Main(string[] args)
{
dynamic context;
#if (BUILDARCH64)
context = new Context64();
#else
context = new Context();
#endif
Console.Write(context.ToString());
}
}
public struct Context
{
}
public struct Context64
{
}
}
In your 64 bit build you'll need to set a Conditional compilation symbol, which you can do by opening the Properties for your project by double clicking on the *Properties* node in Solution Explorer, going to the *Build* tab and entering `BUILDARCH64` against the appropriate build Configuration.
I've not gone into whether doing this is a good idea or not, as there may be a better solution to the problem the asker was trying to solve, but without more detail that's hard to tell