C# features "preprocessor directives" (though it does not have an actual preprocessor) based on the C preprocessor that allow programmers to define symbols but not macros. Conditionals such as #if, #endif, and #else are also provided. Directives such as #region give hints to editors for code folding.

Comments(1)

I use this all the time. You can use this exactly like you've used C++ macros that can be controlled from compile command line and create multiple deliverable versions based off the same source code base