在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ C++/ D語言條件編譯
類的訪問修飾符
D語言運(yùn)算符
D語言邏輯運(yùn)算符
類指針
D語言元組
D語言指針
D語言模塊
D語言sizeof運(yùn)算符
D語言混合類型
D語言封裝
D語言條件編譯
類的靜態(tài)成員
D語言do...while循環(huán)
D語言結(jié)構(gòu)體
重載
D語言字符串-String
D語言決策語句
D語言接口
D語言for循環(huán)
D語言switch語句
D語言關(guān)聯(lián)數(shù)組
D語言范圍
D語言枚舉Enums
契約式編程
D語言并發(fā)
D語言開發(fā)環(huán)境設(shè)置
D語言別名
D語言常值
D語言常量
D語言函數(shù)
D語言if嵌套語句
D語言循環(huán)
D語言概述,D語言是什么?
D語言運(yùn)算符優(yōu)先級
D語言continue語句
D語言異常處理
D語言break語句
D語言if...else語句
D語言類和對象
類繼承
D語言字符
D語言教程
D語言關(guān)系運(yùn)算符
比較操作符重載
構(gòu)造函數(shù)和析構(gòu)函數(shù)
D語言抽象類
D語言if語句
D語言賦值運(yùn)算符
D中算術(shù)運(yùn)算符
D語言類成員函數(shù)
D語言位運(yùn)算符
D語言變量
D語言數(shù)據(jù)類型
D語言文件I/O
D語言數(shù)組
一元運(yùn)算符重載
D語言嵌套switch語句
D語言基本語法
二元運(yùn)算符重載
this指針
D語言聯(lián)合體
D語言模板
D語言嵌套循環(huán)
D語言while循環(huán)

D語言條件編譯

條件編譯:

條件編譯是選擇編譯以及代碼,代碼無法編譯類似的#if/#其他/#endif在C和C ++中。未在編譯的任何聲明仍然必須是語法正確。條件編譯涉及到條件檢查是在編譯時計算。就像如果運(yùn)行條件語句,為,而不是條件編譯的功能。以下是D程序?qū)iT為條件編譯的功能。

  • debug

  • version/p>

  • static if

debug

調(diào)試程序開發(fā)過程中是非常有用的。標(biāo)記為調(diào)試的表達(dá)式和語句被編譯成只在調(diào)試編譯器開關(guān)啟用程序。

debug a_conditionally_compiled_expression; 

debug 
{
   // ... conditionally compiled code ...
} 
else 
{
   // ... code that is compiled otherwise ...
}

else子句是可選的。無論是單個表達(dá)式和上面的代碼塊只有當(dāng)調(diào)試編譯器開關(guān)啟用編譯。

而不是完全取消的,該行可以代替被標(biāo)記為調(diào)試。

debug writefln("%s debug only statement", value);

這樣的行都包含在僅在調(diào)試編譯器開關(guān)啟用程序。

dmd test.d -oftest -w -debug	

debug(tag)

調(diào)試語句可以給出的名稱(標(biāo)簽)被列入程序選擇性。

debug(mytag) writefln("%s not found", value);

這樣的行包含僅在調(diào)試編譯器開關(guān)啟用程序。

dmd test.d -oftest -w -debug=mytag

調(diào)試塊也可以有標(biāo)簽。

debug(mytag)
{
   // 
}

這是可能的,以使多個調(diào)試標(biāo)記的時間。

dmd test.d -oftest -w -debug=mytag1 -debug=mytag2

debug(level)

有時,調(diào)試語句通過數(shù)值級別關(guān)聯(lián)是比較有用的。提高級別可以提供更詳細(xì)的信息。

import std.stdio;

void myFunction()
{
   debug(1) writeln("debug1");
   debug(2) writeln("debug2");    
}

void main()
{
   myFunction();
}

調(diào)試表達(dá)式和塊為低于或等于指定級別會被編譯。

$ dmd test.d -oftest -w -debug=1
$ ./test
debug1

version(tag)and version(level)

版本是類似于調(diào)試,并用于以相同的方式。else子句是可選的。雖然版本的作品本質(zhì)上是相同的調(diào)試,有單獨(dú)的關(guān)鍵字可以幫助區(qū)分他們無關(guān)的用途。與調(diào)試,多個版本可以啟用。

import std.stdio;

void myFunction()
{
   version(1) writeln("version1");
   version(2) writeln("version2");    
}

void main()
{
   myFunction();
}

調(diào)試表達(dá)式和塊為低于或等于指定級別會被編譯。

$ dmd test.d -oftest -w -version=1
$ ./test
version1

static if

static if 是編譯時相當(dāng)于if語句中。就像if語句,static if 需要一個邏輯表達(dá)式,并計算它。不同的是if語句,static if 不是關(guān)于執(zhí)行流程;更確切地說,它確定一塊代碼是否應(yīng)當(dāng)包括在程序或不包括。

表達(dá)是無關(guān)的是運(yùn)算符,我們已經(jīng)看到在空值和操作是段落,既語法和語義。下表達(dá)式是在編譯時計算。它產(chǎn)生一個int值,0或1;取決于在括號中指定的表達(dá)式。雖然,它需要表達(dá)的是不是一個邏輯表達(dá)式,該表達(dá)式是本身被用作一個編譯時邏輯表達(dá)式。它是靜態(tài)的特別有用的,如果條件和模板的約束。

import std.stdio;

enum Days
{
   sun,
   mon,
   tue,
   wed,
   thu,
   fri,
   sat
};

void myFunction(T)(T mytemplate)
{
   static if (is (T == class))
   {
      writeln("This is a class type");
   }
   else static if (is (T == enum))
   {
      writeln("This is an enum type");
   }
}

void main()
{
   Days day;
   myFunction(day);
}

當(dāng)我們編譯和運(yùn)行,我們將如下得到一些輸出。

This is an enum type

上一篇:契約式編程下一篇:D語言抽象類