//#define DEBUG
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 控制台
{
class Program
{
static void Main(string[] args)
{
#if DEBUG
Console.Write("debug");
#endif
Console.ReadKey();
}
}
}我把#define DEBUG注释掉了,为什么还是输出了呢?不是没有定义吗?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 控制台
{
class Program
{
static void Main(string[] args)
{
#if DEBUG
Console.Write("debug");
#endif
Console.ReadKey();
}
}
}我把#define DEBUG注释掉了,为什么还是输出了呢?不是没有定义吗?
解决方案 »
- 一个初始化的小问题
- 请教各位高手关于c#小游戏的编写大体思路~
- WPF Toolkit是哪来的
- 飞信向SIP协议向Proxy Server注册问题
- C#math.ceiling() 怎样替代Excel中的ceiling()
- 如何使控件的坐标不随滚动条变化而变化???
- 高手帮我来看看这是怎么回来啊!
- 我提取论坛登陆的Cookies为什么和正常的不一致?
- vs2005 中的DataSet 的SQL语句中的in 的变量怎么写啊 !!
- 问一个问题
- 使用foreach遍历自定义可枚举类型的时候为什么并不要求自定义类型实现 IEnumerable和IEnumerator?
- 预处理指令不能有两个#if语句吗
编译器为什么要搞个 DEBUG啊,不就是一个符号吗?自己想怎么写这个符号就怎么写吧
搞得就像 DEBUG是一个关键字一样
在Visual Studio里你是可以选择是Debug模式还是Release模式的。
如果你选的是Release模式,DEBUG就没有被定义了。
#if AdvanceVersion
#else #endif
可以分别定义两个版本的不同内容,并保留相同内容,以免相同部分代码变化后变更两个版本的代码。在调试时临时使用的东西可以在发布时去掉#define,就不会影响正式代码,很方便吧.
DEBUG是VS预定义的符号那RESEASE呢?这个符号是不是VS预定义的?经常看到这个符号
大家的意思不是说这个是VS预定义的。
这个是可以配置的。
上面已经有人说过 “你在项目->属性->生成中会发现配置为Debug”。
你有没有打开看看。那里边是没有Release的配置的。另外,你以前是不是写C语言的。VS是个高级的IDE。
集成了很多东西。建议你多鼓捣鼓捣。然后再提问。
上面这段话,简直不懂,DEBUG和Release不就是两个符号吗?说那么一通,有这么复杂吗
Debug的版本生成的程序里边包含着调试的信息,所以同样的程序,如果你比较两个版本,你会发现Debug版本要比Release的版本大。另外Release版本生成的程序要对代码进行优化,而Debug版本不进行优化。
举个简单的例子:string message = "hello";
Console.WriteLine(message);在Release版本中会优化为
Console.WriteLine("hello");
如何选择,是在VS的设置里吗?
Release也是VS的预定义符号吗?
之所以输出是因为,DEBUG 是编译器默认变量...
并不需要你自己 声明
你只要选择 编译模式就可以了
你看下我下面的说得对不?接到一个项目,在编写代码的时候,一般是选择Debug版本(项目----属性----生成----配置----活动(Debug))
在编写完后,要发布了,就改成Release模式,这样,代码会自动优化。(项目----属性----生成----配置----Release)
代码中实际有没有Debug和Release符号都无所谓,是这样的吗?