RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:8:30-17:00
你可能遇到了下面的问题
关闭右侧工具栏

新闻中心

这里有您想知道的互联网营销解决方案
C#(江湖小新)-编译预处理(高手都会用这个)-创新互联

什么是编译预处理?

创新互联于2013年成立,是专业互联网技术服务公司,拥有项目网站设计、成都网站设计网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元北湖做网站,已为上家服务,为北湖各地企业和个人服务,联系电话:18980820575
  • 预处理器指令指导编译器在实际编译开始之前对信息进行预处理

  • 所有的预处理器指令都是以 # 开始

  • 在一行上,只有空白字符可以出现在预处理器指令之前

  • 预处理器指令不是语句,所以它们不以分号(;)结束

  • 不同于 C 和 C++ 指令,不能使用这些指令来创建宏

标识符

标识符声明

  • 如果标识符已经被定义,其语义则等同于 true, 反之是false

  • 如果使用了undef 取消了定义的标识符,语义等同于false

标识符描述
#define它用于定义一系列成为符号的字符。
#undef它用于取消定义符号。

示例

// 定义三个符号
#define AA
#define BB
#define DEBUG
// 取消其中定义的BB
#undef BB
namespace ConsoleApp1
{
    internal class CompileTest
    {        
    }
}

条件编译

条件编译

  • 使用以下四个预处理器指令来控制条件编译

#if, #elif, #else, #endif
  • 仅在定义指定的符号或者在使用 !  not未定义指定的符号时,C# 编译器才编译 #if 指令和 #endif 指令之间的代码。与 C 和 C++ 不同,不能将数字值分配给符号。C# 中的 #if 语句是布尔值,且仅测试是否已定义该符号

  • 可以使用以下逻辑运算符

    • == (等于)

    • != (不等于)

    • && (与)

    • || (或)

示例:

#define AA
#define BB
namespace ConsoleApp1
{
    internal class CompileTest
    {
        public static void Main()
        {
            #if (AA && BB)
                Console.WriteLine("AA和BB都定义了");
            #elif (!BB || !AA)
                Console.WriteLine("AA或BB有一个没定义");
            #else
                Console.WriteLine("其它情况");
            #endif
        }
    }
}

输出结果:

AA和BB都定义了
信息报告

#warning 和 #error

  • 当编译器遇到#warning时,会给用户显示 #warning 指令后面的文本,之后编译继续进行

  • 当编译器遇到 #error 指令,就会给用户显示后面的文本,作为一条编译错误消息,然后会立即退出编译

示例

#define AA
#define BB

namespace ConsoleApp1
{
    internal class CompileTest2
    {
        public static void Main()
        {
            #if AA && BB
                #error "AA和BB不能同时满足"
            #endif
            #warning "警告警告,是不是有代码忘记写了..."  
        }
    }
}

注: 直接点击运行,控制台会打印如下日志,并停止程序

行号标记

#line 指令可以用于改变编译器在警告和错误信息中显示的文件名和行号信息,不常用

#line 36 "Core.cs" // 在文件的第 164 行

#line default // 恢复默认行号

代码块

#region 和 #endregion 指令用于把一段代码标记为有给定名称的一个块

语法: 

#region 代码块的说明
  ... ... (具体的多行代码)
#endregion

示例: 

#region  定义了一些变量
int a=0;
int b=0;
double d=2.2D;
#endregion

更多好看的内容请关注微信公众号: 程序猿知秋​​​​​​​

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


文章标题:C#(江湖小新)-编译预处理(高手都会用这个)-创新互联
当前URL:http://lswzjz.com/article/cdcjds.html