1)根据你必须知道的.NET一书,

#define DEBUG  

 class Program
{
static void Main(string[] args)
{
#if DEBUG
Console.WriteLine("debug mode");
#else
Console.WriteLine("release mode");
#endif
} }

代码很简单,但其实这段代码是有问题的。

原因出在,其实vs中内置了DEBUG,所以无需在开头再定义DEBUG。还是stackoverflow这里讲得比较正确。

把第一行去掉后,编译选项选择debug/release的切换,就能切换编译的结果了。

2)关于ConditionAttribute

        class Test
{
static void Main()
{
Foo();
Console.Read();
}
[Conditional("DEBUG")]
static void Foo()
{
Console.WriteLine("debug mode");
} }

在DEBUG模式下,Foo能运行,否则编译时就会被跳过。

对上面的一点扩展:

#define mydefineSymbol
using System;
using ...
class Test
{
static void Main()
{
Foo(); Console.Read();
}
[Conditional("mydefineSymbol")]
static void Foo()
{
Console.WriteLine("debug mode");
} }

在第一行定义了mydefineSymbol之后,这样,Foo就会被编译器包括进来;否则则不被编译。

3)很多时候,我们需要在测试环境下一套逻辑,生产环境中用另一套,那么可以使用在项目属性对话框中,自定义条件编译符号,这样,不用在每个文件最上手动添加一个#define。

代码是:

            static void Main()
{
#if !Produce Console.WriteLine("Produce");
#endif
Console.Read();
}

如果是Debug模式,则会编译该条件;如果是Release则会忽略。

注意:

1)DEBUG是大小写敏感的,写成Debug或debug是无用的。

2)写Release是没有用的。原因是只有DEBUG这个词在VS中被预定义了。

预定义指令之debug的更多相关文章

  1. php预定义变量,超全局变量,魔术方法,特殊函数变量使用

    <?php /* * 本代码全部为测试函数代码,部分注释和写实例 * * 修改php.ini variables_order=”EGPCS” * 请注意$_REQUEST在优先级传参的时候会造成 ...

  2. VS2013 预定义的宏

    Visual Studio 2013 预定义的宏 https://msdn.microsoft.com/zh-cn/library/b0084kay(v=vs.120).aspx 列出预定义的 ANS ...

  3. Paip.最佳实践-- Buildin variale 内建变量 ,魔术变量,预定义变量,系统常量,系统变量 1

    Paip.最佳实践-- Buildin variale 内建变量 ,魔术变量,预定义变量,系统常量,系统变量 1.1.1       C++内建变量(__LINE__).... 1.1.2       ...

  4. C++ 中常见预定义宏的使用

    http://blog.csdn.net/hgl868/article/details/7058906 替代字符串: #define DOWNLOAD_IMAGE_LOG /var/log/png.l ...

  5. php的预定义数组

    PHP预定义变量数组 1.$_SERVER 变量由Web服务器设定或者直接与当前的脚本的执行环境相关联 $_SERVER超级全局变量包含由web服务器创建的信息,它提供了服务器和客户配置及当前请求环境 ...

  6. 预定义变量 - PHP手册笔记

    预定义变量将所有的外部变量表示成内建环境变量,并且将错误信息表示成返回头.超全局变量是在全部作用域中始终可用的内置变量.在函数或方法中无需执行global $variable,就可以访问它们. $GO ...

  7. C#中一些默认的预定义属性

    C#中一些默认的预定义属性,见下表: 预定义的属性 有效目标 说明 AttributeUsage Class 指定另一个属性类的有效使用方式 CLSCompliant 全部 指出程序元素是否与CLS兼 ...

  8. nginx内置预定义变量

    nginx的配置文件中可以使用的内置变量以美元符$开始,也有人叫全局变量.其中,部分预定义的变量的值是可以改变的. $arg_PARAMETER 这个变量值为:GET请求中变量名PARAMETER参数 ...

  9. visual c++中预定义的宏

    一.主要目标 (由于visual studio通常包含很多开发环境,通常将其中c/c++的ide称为visual c++ 20xx) 整理下visual c++ 2010下预定义的宏.做一下备忘和了解 ...

随机推荐

  1. 系统调用方式文件编程,王明学learn

    系统调用方式文件编程 一.文件描述符 在Linux系统中,所有打开的文件也对应一个数字,这个数字由系统来分配,我们称之为:文件描述符. 二.函数学习 2.1打开文件  open 2.1.2 函数原形 ...

  2. Codeforces Round #248 (Div. 2) C. Ryouko's Memory Note

    题目链接:http://codeforces.com/contest/433/problem/C 思路:可以想到,要把某一个数字变成他的相邻中的数字的其中一个,这样总和才会减少,于是我们可以把每个数的 ...

  3. poj 1816 (Trie + dfs)

    题目链接:http://poj.org/problem?id=1816 思路:建好一颗Trie树,由于给定的模式串可能会重复,在原来定义的结构体中需要增加一个vector用来记录那些以该节点为结尾的字 ...

  4. Activity活动

    自定义一个类继承Activity类后结构已经很好了 提供了finish()来销毁活动 要记得注册

  5. android 瀑布流

    我们还是来看一款示例: 看起来很像我们的gridview吧,不过又不像,因为item大小不固定的,看起来是不是别有一番风味,确实如此.就如我们的方角图形,斯通见惯后也就出现了圆角.下面我简单介绍下实现 ...

  6. Big Event in HDU

    Description Nowadays, we all know that Computer College is the biggest department in HDU. But, maybe ...

  7. MVC3实现多个按钮提交

    有时我们需要在同一个Form表单中进行多个按钮的提交,来完成不同的功能.因为MVC中一个表单默认只能提交到一个Action处理,相对比较麻烦. 1.使用客户端脚本 我们可以view中加上如下代码: & ...

  8. Java Android 注解(Annotation) 及几个常用开源项目注解原理简析

    不少开源库(ButterKnife.Retrofit.ActiveAndroid等等)都用到了注解的方式来简化代码提高开发效率. 本文简单介绍下 Annotation 示例.概念及作用.分类.自定义. ...

  9. @import与link

    本质上,这两种方式都是为了加载CSS文件,但还是存在着细微的差别. 1. 老祖宗的差别.link属于XHTML标签,而@import完全是CSS提供的一种方式. link标签除了可以加载CSS外,还可 ...

  10. hdu2255 二分图最大权配KM

    KM算法:hdu2255 (大概理解了 参考博客: http://blog.csdn.net/niushuai666/article/details/7171880)         所谓交错树:就是 ...