国产chinesehdxxxx野外,国产av无码专区亚洲av琪琪,播放男人添女人下边视频,成人国产精品一区二区免费看,chinese丰满人妻videos

D編程 條件編譯

2021-09-01 10:44 更新

條件語(yǔ)句涉及可在編譯時(shí)判斷的條件檢查,運(yùn)行時(shí)條件語(yǔ)句(如if,for,while)不是條件編譯函數(shù), D的以下函數(shù)用于條件編譯-

  • debug
  • version
  • static if

調(diào)試語(yǔ)句

調(diào)試在程序開(kāi)發(fā)過(guò)程中很有用。僅當(dāng)啟用-debug編譯器開(kāi)關(guān)時(shí),才會(huì)將標(biāo)簽為debug的表達(dá)式和語(yǔ)句編譯到程序中。

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

else子句是可選的。僅在啟用-debug編譯器開(kāi)關(guān)時(shí),才編譯單個(gè)表達(dá)式和上面的代碼塊。

這些行可以完全標(biāo)簽為debug而不是完全刪除。

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

僅當(dāng)啟用-debug編譯器開(kāi)關(guān)時(shí),此類(lèi)行才包含在程序中。

dmd test.d -oftest -w -debug 

Debug語(yǔ)句

可以給調(diào)試語(yǔ)句指定名稱(chēng)(標(biāo)簽),以便有選擇地包含在程序中。

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

僅當(dāng)啟用-debug編譯器開(kāi)關(guān)時(shí),此類(lèi)行才包含在程序中。

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

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

debug(mytag) { 
   //
}

一次可以啟用多個(gè)調(diào)試標(biāo)簽。

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

調(diào)試級(jí)別

有時(shí),按數(shù)字級(jí)別關(guān)聯(lián)調(diào)試語(yǔ)句會(huì)更有用。級(jí)別增加可以提供更多詳細(xì)信息。

import std.stdio;  

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

void main() { 
   myFunction(); 
} 

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

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

Debug和Version示例

版本類(lèi)似于調(diào)試,并且以相同的方式使用。 else子句是可選的。盡管版本在本質(zhì)上與調(diào)試相同,但是使用單獨(dú)的關(guān)鍵字有助于區(qū)分它們的不相關(guān)用法。與調(diào)試一樣,可以啟用多個(gè)版本。

import std.stdio;  

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

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

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

static if

靜態(tài)if是if語(yǔ)句的編譯時(shí)等效項(xiàng)。就像if語(yǔ)句一樣,靜態(tài) if接受邏輯表達(dá)式并對(duì)其求值。與if語(yǔ)句不同,靜態(tài) if與執(zhí)行流程無(wú)關(guān);相反,它確定程序中是否應(yīng)包含一段代碼。

在語(yǔ)法和語(yǔ)義上,if表達(dá)式都與我們之前所見(jiàn)的is運(yùn)算符無(wú)關(guān)。它在編譯時(shí)判斷。它產(chǎn)生一個(gè)整數(shù)值,0或1;否則為0。取決于括號(hào)中指定的表達(dá)式。盡管它采用的表達(dá)式不是邏輯表達(dá)式,但是is表達(dá)式本身用作編譯時(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)行時(shí),我們將得到如下輸出。

This is an enum type


以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)