在C和C++中常有用到宏定义#define,在C#中也这个关键字,不过功能不同了,C#中是作为条件编译的条件。

#define XXX 是定义XXX为条件编译的条件,相当于将XXX设为true。

#undef XXX是取消XXX的条件编译条件,相当于将XXX设为false。

#define和#undef必须在using之前进行定义,不然编译不通过。#define和#undef需要结合#if/#elif/#endif一起使用,下面是一段示例代码

#define DEGUB
#undef TRACE
//#define TRACE
//#undef DEBUGusing System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace Chapter5_defineUndef
{class Program{static void Main(string[] args){
#if DEBUGConsole.WriteLine("Debug is enabled!");
#endif#if TRACEConsole.WriteLine("Trace is enabled!");
#endifConsole.ReadLine();}}
}

#define DEUBG 是将DEBUG设为true,#undef TRACE 是将TRACE设为false.所以输出的是Debug is enabled!.

如果将#define DEBUG和#undef TRACE屏蔽,将#define TRACE和#undef DEBUG取消注释,那么将输出Trace is enabled!

条件编译在测试和生成不同的版本时尤其有用。

可参看该文章http://msdn.microsoft.com/en-us/library/yt3yck0x.aspx

除了在IDE中指定条件编译的条件外,如果使用csc.exe来编译时,也可直接指定。不过,这时建议在代码中将#define和#undef的定义取消掉。修改部分的代码如下

//#define DEGUB
//#undef TRACE
//#define TRACE
//#undef DEBUG

这时我们需要设到VS的CMD命令工具,然后执行csc.exe,如下图

对于没有指定的条件,默认为false。

转载于:https://www.cnblogs.com/sparkleDai/p/7605060.html

VS中使用define和undef实现条件编译(csc.exe条件编译)相关推荐

  1. 详解C语言中的#define、#undef、#indef、#ifndef、#else、#endif,#if,#elif

    1. 明示常量#define #define为C语言的一个预处理指令,通常用于进行宏定义.每行#define(逻辑行)一般由以下三部分组成,第一部分是#define指令本身,第二部分为宏,第三部分为称 ...

  2. 条件编译#define、#undef、#if、#elif、#elif defined、#elif !defined 、#endif用法

    条件编译 上代码 // what is the fucking shit.cpp : 定义控制台应用程序的入口点. //#include "stdafx.h"#include &l ...

  3. #define、#undef、#ifdef、#ifndef、#if、#elif、#else、#endif、defined解释

    #define.#undef.#ifdef.#ifndef.#if.#elif.#else.#endif.defined. #define            定义一个预处理宏 #undef     ...

  4. 【Verilog-19.3】define和undef的用法

    19.3 `define and `undef 提供了文本宏替换功能,可以使用有意义的名称来表示常用的文本片段.例如,在整个描述中重复使用一个常数的情况下,文本宏是有用的,如果常数的值需要改变,因为它 ...

  5. 每日一题(12)—— .h头文件中ifndef/define/endif的作用

     .h头文件中ifndef/define/endif的作用? 分析: 防止头文件被重复包含. #ifndef _TEST_H_ #define _TEST_H_/* test.h */#endif / ...

  6. oracle数据库variable,oracle中的define,declare,variable的差别

    当前位置:我的异常网» 数据库 » oracle中的define,declare,variable的差别 oracle中的define,declare,variable的差别 www.myexcept ...

  7. c语言常用的条件编译,C语言条件编译

    使用与平台有关的C语言函数,可能会使得程序不具有可移植性.比如Socket编程.多线程编程等是与平台有关的. 若想将程序做成平台无关的就需要用到与平台相关的条件编译. 编译器 GCC #ifdef _ ...

  8. 将dumpbin从VS中抠出来,并使用dumpbin查看exe和dll库的依赖关系

    目录 1.初步说明 2.在开发的机器上使用dumpbin工具查看dll库的依赖关系 3.将dumpbin.exe从Visual Studio中抠出来 3.1.找到dumpbin.exe文件及其依赖的d ...

  9. c语言中 d的用法,C语言中的#define用法总结

    1.宏定义 格式: #define   标识符(也称为宏名)   替换列表 例如; #define PI 3.14 以上代码就是定义了一个宏.  宏的名称为PI, 我们在使用的时候,会在编译预处理时, ...

最新文章

  1. windwos -- bat脚本
  2. Linux 最常用命令
  3. 3/100. Merge Two Binary Trees
  4. Linux命令(8):headtail命令
  5. python菜单栏添加子菜单_python添加菜单图文讲解
  6. 关于人工智能的实现(猜测)
  7. [面试] 算法(六)—— 链表
  8. IE6 与 GZIP, BUG汇总
  9. POJ 3764 The xor-longest Path
  10. 北京大学公开课重磅来袭!欢迎走进「AI for Science」课堂
  11. 响应式图片的3种解决方案
  12. WSTMart商城系统数据字典
  13. 测试工程师常见面试题
  14. 控制工程实践(4)——线性控制系统的稳态误差(之一)
  15. 要把服务器架在太空的海盗湾,为什么能活十五年?
  16. 常见的html转义字符
  17. com1com2端口
  18. Tesla AI Day视觉自动驾驶技术解读:感知+规划+矢量地图+自动标注+仿真
  19. 前端JS常用工具方法
  20. matlab 暂态稳定性,(参考)MATLAB实验电力系统暂态稳定分析.doc

热门文章

  1. 湖南第一师范计算机科学与技,湖南第一师范学院2019年各省各专业录取分数线...
  2. 电脑电池修复_笔记本电脑充不进去电如何修复
  3. oracle有没有mysql if_Oracle中没有 if exists(...)
  4. 使用echarts(三)自定义图表仪表盘
  5. php 通讯协议,通讯协议作用
  6. java里的进制转换函数_基于Java中进制的转换函数详解
  7. Java poi设置打开模式_java操作Excel的poi 格式设置
  8. sending data mysql_MySQL查询中Sending data占用大量时间的问题处理
  9. 简单的java信息显示_JSP实现简单的用户登录并显示出用户信息的方法
  10. python面向对象的特征_03 Python 关键点讲解:面向对象的机制