預處理指令(C#)

目錄

    • 預處理指令簡介
    • #define、#undef
    • #if、#elif、#else、#endif
    • #warning、#error
    • #region、#endregion
    • #line、#line default
    • #pragma

預處理指令簡介

微軟對預處理指令解釋鏈接
https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/preprocessor-directives/index
預處理指令不會轉化為可執行代碼中的命令,但會影響編譯過程的各個方面。例如使用預處理指令可以禁止編譯器編譯代碼的某一部分。
預處理器指令的開頭都有符號#

#define、#undef

#define的用法如下所示:

#define DEBUG

它告訴編譯器存在給定名稱的符號,在本例中是DEBUG。這有點類似于聲明的一個變量,但這個變量并沒有真正的值,只是存在而已。這個符號不是實際代碼的一部分,而只在編譯器編譯代碼時存在。在C#代碼中它沒有任何意義。
#undef 刪除符號的定義:

#undef DEBUG

如果符號不存在,#undef就沒有任何作用。同樣如果符號已經存在,則define也不起作用。
必須把#define和#undef命令放在C#文件的開頭位置,在聲明要編譯的任何對象的代碼之前。

#if、#elif、#else、#endif

#if與#endif

# if DEBUG
。。。。。。。代碼
# endif

包含在#if與#endif之間代碼只有在定義了符號DEBUG后才會執行,否則將會忽略代碼。

#elif(=else if)、#else
這兩個預處理指令就和if/else的指令用法一樣。
#if與#elif還支持一組邏輯運算符操作,“!”、“==”、“!=”、“||”。如果符號存在認為是true否則為false。

#warning、#error

當編譯器遇到這兩個指令時,會分別產生警告或錯誤。

  • 如果編譯器遇到#warning指令,會向用戶顯示#warning指令后邊的文本,之后編譯繼續進行。
  • 如果編譯器遇到#error指令,會向用戶顯示#error指令后邊的文本,作為一條編譯錯誤消息,然后會立即退出編譯,不會生成IL代碼。

#region、#endregion

#region和#endregion指令用于把一段代碼視為有給定名稱的一個塊

#region 代碼片名稱
在這里插入代碼片
#endregion

在vs中使用#region和#endregion指令的塊可以被折疊。這樣代碼布局看起來更合理。

#line、#line default

#line指令可以用于改變編譯器在警告和錯誤信息中顯示的文件名和行號信息。這條指令用的并不多。
#line default把行號還原為默認的行號

#pragma

#pragma指令可以抑制或者還原指定的編譯警告。與命令行選項不同,#pragma指令可以在類或方法級別實現,對抑制警告的內容和抑制的時間進行更精細的控制。
下邊的例子禁止字段未使用警告,然后在編譯MyClass類后還原警告:

#pragma warning disable 169
public class MyClass
{
int A=1}
#pragma warning restore 169

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/254576.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/254576.shtml
英文地址,請注明出處:http://en.pswp.cn/news/254576.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

NSWindowController的初始化創建代碼

-(PRAboutWindowController*)aboutCtrl{ if(_aboutCtrl nil){ _aboutCtrl [[PRAboutWindowController alloc]initWithWindowNibName:"PRAboutWindowController"]; } return _aboutCtrl ; } 轉載于:https://www.cnblogs.com/PJXWang/p/5816675.html

對CMMI3的學習和思考

原文出處: http://tech.it168.com/m/2007-08-02/200708020957750.shtml本文請勿轉載。近來筆者所在公司正在為過CMMI3做各種準備,對公司的員工進行了一些相關的培訓,作為項目管理人員的我,在學習CMMI3的過程中,也有了自…

Python3抓取糗百、不得姐

?點擊關注 異步圖書,置頂公眾號 每天與你分享 IT好書 技術干貨 職場知識 重要提示1:本文所列程序均基于Python3.6,低于Python3.6的Python版本可能無法運行.重要提示2:因所抓取的網站可能隨時更改展示內容,因此程序也需及時跟進.重要提示3:本程序僅供學習,不能拿去做…

halcon邊緣檢測的方法及各種方法的適用范圍

目錄一、邊緣提取二、BLOB分析檢測三、贓物檢測一、邊緣提取 1、設置ROI興趣區域 2、快速二值化,并連接相鄰區域。 這樣做的目的是進一步減少目標區域,通過二值化將目標區域大概輪廓提取出來 3、提取最接近目標區域的輪廓 常用函數有boundary&#xff0…

Oracle優化-表設計

前言  絕大多數的Oracle數據庫性能問題都是由于數據庫設計不合理造成的,只有少部分問題根植于Database Buffer、Share Pool、Redo Log Buffer等內存模塊配置不合理,I/O爭用,CPU爭用等DBA職責范圍上。所以除非是面對一個業已完成不可變更的系…

Win10遠程桌面 出現 身份驗證錯誤,要求的函數不受支持,這可能是由于CredSSP加密Oracle修正 解決方法...

升級至win10 最新版本10.0.17134,遠程桌面連接Window Server時報錯信息如下: 出現身份驗證錯誤,要求的函數不正確,這可能是由于CredSSP加密Oracle修正。 解決方法: 運行 gpedit.msc 本地組策略: 計算機配置…

CMM2

原文出處:http://hi.baidu.com/seaweaver/blog/item/e80e7af427f674d9f2d3854a.html CMM2的六個KPA 1、需求管理 (RM,Requirement Management) 2、軟件項目計劃 (SPP,Software Project Planning&#…

查看linux系統核數

查看linux系統核數: grep ^processor /proc/cpuinfo | wc -l轉載于:https://www.cnblogs.com/myyan/p/5822368.html

Rsyslog 日志相關內容

[rootserver vusers_home]# rpm -ql rsyslog|more ###.so結尾為模塊,模塊有分im為輸入模塊,om 為輸出模塊/etc/logrotate.d/syslog/etc/pki/rsyslog/etc/rc.d/init.d/rsyslog/etc/rsyslog.conf/etc/rsyslog.d/etc/sysconfig/rsyslog/lib64/rsyslog…

MFC導出對話框類DLL的實現

1.新建基于對話框的應用程序 2.新建MFC DLL工程 3.選擇MFC DLL 4.選擇擴展Dll選項(重要!!!) 5.為Dll工程添加一個MFC類,基類為CDialogEx 6.Dll新建的MFC 類中添加resource.h防止編譯出錯…

中國如何引進CMM評估,促進軟件產業發展

北京軟件行業協會 (本文轉載自軟件工程專家網www.21cmm.com) 一、CMM的含義及作用   CMM(軟件能力成熟度模型:Capability Maturity Model For Software)是由美國卡內基梅 隆大學的軟件工程研究所(SEI&a…

關于游戲平衡性——王者榮耀英雄傷害數值參考

收集王者榮耀各個英雄的裝備對技能增加的百分比,這樣的主要目的為保證游戲的平衡性。對于技能主要包括:血量、物理攻擊、法術攻擊、物理穿透、法術穿透、暴擊等。關于各個裝備,已經列成一張excel表格,在這里不再詳細描述表格。在這…

Swift-setValuesForKeysWithDictionary

重寫 setValuesForKeysWithDictionary 那么字典中可以有的字段在類中沒有對應屬性 class Person : NSObject {var age :Int 0 // 重寫 setValuesForKeysWithDictionary 那么字典中可以有的字段在類中沒有對應屬性override func setValuesForKeysWithDictionary(keyedValues…

hdu 1269 迷宮城堡(trajan判環)

題目鏈接&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid1269 題意&#xff1a;略 題解&#xff1a;trajan模版直接求強連通分量。 #include <iostream> #include <cstring> #include <cstdio> using namespace std; const int N 1e4 10; const i…

Arithmetic圖像處理halcon算子持續更新

目錄abs_diff_imageabs_imageacos_imageadd_imageasin_imageatan2_imageatan_imagecos_imagediv_imageexp_imagegamma_imageinvert_imagelog_imagemax_imagemin_imagemult_imagepow_imagescale_imagesin_imagesqrt_imagesub_imagetan_imageabs_diff_image 功能&#xff1a;計算…

身于“亂世”,我們程序員應該如何打算?

今天看了這篇文章&#xff0c; 發現自己也有點生處亂世&#xff0c;不平之感&#xff0c;但是文章的樸實卻讓我有了一個良好的反省&#xff0c;特此轉載 分類&#xff1a; 項目管理 2011-09-04 00:58 770人閱讀 評論(12) 收藏 舉報 不僅要低頭拉車&#xff0c;還要抬頭看路。…

Activity的啟動流程

Activity的啟動流程 努力工作 自己平時工作接觸的frameworks代碼比較多&#xff0c;但真正理解的很有限&#xff0c;一直在努力分析。。我主要還是用補丁的形式來看 core/java/android/app/Activity.java | 6 core/java/android/app/ActivityManagerNative.jav…

es6--箭頭函數

基本用法 ES6允許使用“箭頭”&#xff08;>&#xff09;定義函數。 var f v > v; 上面的箭頭函數等同于&#xff1a; var f function(v) {return v; }; 如果箭頭函數不需要參數或需要多個參數&#xff0c;就使用一個圓括號代表參數部分。 var f () > 5; // 等同于…

halcon Bit圖位像素處理算子,持續更新

目錄bit_andbit_lshiftbit_maskbit_notbit_orbit_rshiftbit_slicebit_xorbit_and 功能&#xff1a;輸入圖像的所有像素的逐位與。 bit_lshift 功能&#xff1a;圖像的所有像素的左移。 bit_mask 功能&#xff1a;使用位掩碼的每個像素的邏輯與。 bit_not 功能&#xff1…

NYOJ題目839合并

--------------------------- AC代碼&#xff1a; 1 import java.util.Scanner;2 3 public class Main {4 5 public static void main(String[] args) {6 7 8 Scanner scnew Scanner(System.in);9 10 int timessc.nextInt(); 11 …