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

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

D語(yǔ)言條件編譯

條件編譯:

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

  • debug

  • version/p>

  • static if

debug

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

debug a_conditionally_compiled_expression; 

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

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

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

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

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

dmd test.d -oftest -w -debug	

debug(tag)

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

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

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

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

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

debug(mytag)
{
   // 
}

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

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

debug(level)

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

import std.stdio;

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

void main()
{
   myFunction();
}

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

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

version(tag)and version(level)

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

import std.stdio;

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

void main()
{
   myFunction();
}

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

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

static if

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

表達(dá)是無(wú)關(guān)的是運(yùn)算符,我們已經(jīng)看到在空值和操作是段落,既語(yǔ)法和語(yǔ)義。下表達(dá)式是在編譯時(shí)計(jì)算。它產(chǎn)生一個(gè)int值,0或1;取決于在括號(hào)中指定的表達(dá)式。雖然,它需要表達(dá)的是不是一個(gè)邏輯表達(dá)式,該表達(dá)式是本身被用作一個(gè)編譯時(shí)邏輯表達(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