这篇文章我非常倾向于用视频表现出来,这样可以更直观的感受到各个指令的使用方式,无奈我表述能力实在是欠缺,所以还是直接放代码出来吧;
以下代码特别简单,但是如果大家没用过的话,可能直接看代码也是看不懂用途。所以我这里还是大致表述下:.
- 
	
没有自己定义过的DEBUG和TRACE为何能直接使用?——右键项目,可以看到定义DEBUG常量和定义TRACE常量,前面打勾即可
 - 
	
如何确定DEBUG模式?——直接切换生成模式既可以看到效果
 
- 
	
warning和error指令的体现?——基于现在vs的强大,所以我们只要写出来就会直接体现出来警告或者错误,如果和生成模式结合使用未直接体现,尝试重新生成解决方案
 - 
	
line指令——断点调试跟踪即可看到效果
 
- 
	
define和undef——自定义模式的装载和卸载
 - 
	
region和endregion代码折叠——这个大家比较常用,就没写了
 
- 
	
pragma指令——我感觉不会用到~~~
 
实现代码:
/*
 * #if
 * #else
 * #elif
 * #endif
 * #define
 * #undef
 * #warning
 * #error
 * #line
 * #region
 * #endregion
 * #pragma
 * #pragma warning
 * #pragma checksum
 */
//#define DEBUG
//#undef DEBUG
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Preprocessor
{
    class Program
    {
        static void Main(string[] args)
        {
#if DEBUG
#warning DEBUG模式
            Console.WriteLine(0);
            Console.WriteLine(1);
#elif TRACE
             Console.WriteLine("TRACE");
#else
#error 非DEBUG模式
#endif
            int x = 0;
            x++;
            x++;
#line 44
            Console.WriteLine(x);
            Console.WriteLine(2);
            test1();
            Console.ReadKey();
        }
        [System.Diagnostics.Conditional("DEBUG")]
        static void test1()
        {
            Console.WriteLine("test1");
        }
    }
}