VS中使用define和undef实现条件编译(csc.exe条件编译)
在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条件编译)相关推荐
- 详解C语言中的#define、#undef、#indef、#ifndef、#else、#endif,#if,#elif
1. 明示常量#define #define为C语言的一个预处理指令,通常用于进行宏定义.每行#define(逻辑行)一般由以下三部分组成,第一部分是#define指令本身,第二部分为宏,第三部分为称 ...
- 条件编译#define、#undef、#if、#elif、#elif defined、#elif !defined 、#endif用法
条件编译 上代码 // what is the fucking shit.cpp : 定义控制台应用程序的入口点. //#include "stdafx.h"#include &l ...
- #define、#undef、#ifdef、#ifndef、#if、#elif、#else、#endif、defined解释
#define.#undef.#ifdef.#ifndef.#if.#elif.#else.#endif.defined. #define 定义一个预处理宏 #undef ...
- 【Verilog-19.3】define和undef的用法
19.3 `define and `undef 提供了文本宏替换功能,可以使用有意义的名称来表示常用的文本片段.例如,在整个描述中重复使用一个常数的情况下,文本宏是有用的,如果常数的值需要改变,因为它 ...
- 每日一题(12)—— .h头文件中ifndef/define/endif的作用
.h头文件中ifndef/define/endif的作用? 分析: 防止头文件被重复包含. #ifndef _TEST_H_ #define _TEST_H_/* test.h */#endif / ...
- oracle数据库variable,oracle中的define,declare,variable的差别
当前位置:我的异常网» 数据库 » oracle中的define,declare,variable的差别 oracle中的define,declare,variable的差别 www.myexcept ...
- c语言常用的条件编译,C语言条件编译
使用与平台有关的C语言函数,可能会使得程序不具有可移植性.比如Socket编程.多线程编程等是与平台有关的. 若想将程序做成平台无关的就需要用到与平台相关的条件编译. 编译器 GCC #ifdef _ ...
- 将dumpbin从VS中抠出来,并使用dumpbin查看exe和dll库的依赖关系
目录 1.初步说明 2.在开发的机器上使用dumpbin工具查看dll库的依赖关系 3.将dumpbin.exe从Visual Studio中抠出来 3.1.找到dumpbin.exe文件及其依赖的d ...
- c语言中 d的用法,C语言中的#define用法总结
1.宏定义 格式: #define 标识符(也称为宏名) 替换列表 例如; #define PI 3.14 以上代码就是定义了一个宏. 宏的名称为PI, 我们在使用的时候,会在编译预处理时, ...
最新文章
- windwos -- bat脚本
- Linux 最常用命令
- 3/100. Merge Two Binary Trees
- Linux命令(8):headtail命令
- python菜单栏添加子菜单_python添加菜单图文讲解
- 关于人工智能的实现(猜测)
- [面试] 算法(六)—— 链表
- IE6 与 GZIP, BUG汇总
- POJ 3764 The xor-longest Path
- 北京大学公开课重磅来袭!欢迎走进「AI for Science」课堂
- 响应式图片的3种解决方案
- WSTMart商城系统数据字典
- 测试工程师常见面试题
- 控制工程实践(4)——线性控制系统的稳态误差(之一)
- 要把服务器架在太空的海盗湾,为什么能活十五年?
- 常见的html转义字符
- com1com2端口
- Tesla AI Day视觉自动驾驶技术解读:感知+规划+矢量地图+自动标注+仿真
- 前端JS常用工具方法
- matlab 暂态稳定性,(参考)MATLAB实验电力系统暂态稳定分析.doc
热门文章
- 湖南第一师范计算机科学与技,湖南第一师范学院2019年各省各专业录取分数线...
- 电脑电池修复_笔记本电脑充不进去电如何修复
- oracle有没有mysql if_Oracle中没有 if exists(...)
- 使用echarts(三)自定义图表仪表盘
- php 通讯协议,通讯协议作用
- java里的进制转换函数_基于Java中进制的转换函数详解
- Java poi设置打开模式_java操作Excel的poi 格式设置
- sending data mysql_MySQL查询中Sending data占用大量时间的问题处理
- 简单的java信息显示_JSP实现简单的用户登录并显示出用户信息的方法
- python面向对象的特征_03 Python 关键点讲解:面向对象的机制