预定义指令之debug
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的更多相关文章
- php预定义变量,超全局变量,魔术方法,特殊函数变量使用
<?php /* * 本代码全部为测试函数代码,部分注释和写实例 * * 修改php.ini variables_order=”EGPCS” * 请注意$_REQUEST在优先级传参的时候会造成 ...
- VS2013 预定义的宏
Visual Studio 2013 预定义的宏 https://msdn.microsoft.com/zh-cn/library/b0084kay(v=vs.120).aspx 列出预定义的 ANS ...
- Paip.最佳实践-- Buildin variale 内建变量 ,魔术变量,预定义变量,系统常量,系统变量 1
Paip.最佳实践-- Buildin variale 内建变量 ,魔术变量,预定义变量,系统常量,系统变量 1.1.1 C++内建变量(__LINE__).... 1.1.2 ...
- C++ 中常见预定义宏的使用
http://blog.csdn.net/hgl868/article/details/7058906 替代字符串: #define DOWNLOAD_IMAGE_LOG /var/log/png.l ...
- php的预定义数组
PHP预定义变量数组 1.$_SERVER 变量由Web服务器设定或者直接与当前的脚本的执行环境相关联 $_SERVER超级全局变量包含由web服务器创建的信息,它提供了服务器和客户配置及当前请求环境 ...
- 预定义变量 - PHP手册笔记
预定义变量将所有的外部变量表示成内建环境变量,并且将错误信息表示成返回头.超全局变量是在全部作用域中始终可用的内置变量.在函数或方法中无需执行global $variable,就可以访问它们. $GO ...
- C#中一些默认的预定义属性
C#中一些默认的预定义属性,见下表: 预定义的属性 有效目标 说明 AttributeUsage Class 指定另一个属性类的有效使用方式 CLSCompliant 全部 指出程序元素是否与CLS兼 ...
- nginx内置预定义变量
nginx的配置文件中可以使用的内置变量以美元符$开始,也有人叫全局变量.其中,部分预定义的变量的值是可以改变的. $arg_PARAMETER 这个变量值为:GET请求中变量名PARAMETER参数 ...
- visual c++中预定义的宏
一.主要目标 (由于visual studio通常包含很多开发环境,通常将其中c/c++的ide称为visual c++ 20xx) 整理下visual c++ 2010下预定义的宏.做一下备忘和了解 ...
随机推荐
- Delphi字符串与字符数组之间的转换(初始化的重要性)
紧接着上篇博客讲解的内容: 将Char型数组转换为string类型还有下面的这种方法 但是我在测试的时候遇到了一些问题,并在下面进行了解释和总结 先说出我的总结 其实我们在学习编程的时候(比如我之前学 ...
- MVC4 遇到问题总结
1.路径编写: 举例1.<img src="../Login/VailCode" width="108" height="40"&g ...
- Localstorage本地存储兼容函数
前言HTML5提供了本地存储的API:localstorage对象和sessionStorage对象,实现将数据存储到用户的电脑上.Web存储易于使用.支持大容量(但非无限量)数据同时存储,同时兼容当 ...
- [LeetCode] Letter Combinations of a Phone Number
Given a digit string, return all possible letter combinations that the number could represent. A map ...
- 中断处理流程,ok6410
中断处理流程 CPU在工作的过程中,经常需要与外设进行交互,交互的方式包括”轮询方式”,”中断方式”. 1.轮询方式: CPU不断地查询设备的状态.该方式实现比较简单,但CPU利用率很低,不适合多任务 ...
- MyBatis传入参数与parameterType
参考:http://openwares.net/database/mybatis_parametertype.html Mybatis的Mapper文件中的select.insert.update.d ...
- Socket 通讯
#import "ViewController.h" #import <sys/socket.h> #import <netinet/in.h> #impo ...
- pylab模式
启动IPython时ipython --pylab就可以进入pylab模式,这种模式下画图时图片不会直接蹦出来,而是嵌在交互环境中,当然sypder里自动是pylab模式了
- Android学习笔记(一)——安卓开发环境搭建
安装教程以及资源(2015.11.8最新版):链接:http://pan.baidu.com/s/1kTnOsMr 密码:0ogf
- Python入门神图
国外某小哥制作的Python入门神图