2014-07-04 97 views

回答

7

#if conditionstatic if(condition)取代(用得多編譯時間評估)

#ifdef identversion(ident)

#define ident代替由version = ident

#define ident replacement代替由alias ident replacement

更多信息替換在http://dlang.org/version.html和01的列表

8

更新:最佳答案已經在dlang.org上:http://dlang.org/pretod.html

D沒有預處理器。相反,它提供了強大的編譯時評估和內省功能。

這裏是典型的C的簡單列表/ C++到d轉換,鏈接到相關文件:


C/C++#ifdef#ifndef#else#elif

dversion [link]


C/C++#if <condition>

dstatic if [link]


C/C++#define

d:d翻譯依賴於殼體。

簡單的C/C++定義像#define FOO被轉換爲D的 「version」。例如:version = FOO

代碼像#define BAR 40被翻譯成以下d代碼:enum BAR 40或在極少數情況下,您可能需要使用alias

複雜限定#define GT_CONSTRUCT(depth,scheme,size) \ ((depth) | (scheme) | ((size) << GT_SIZE_SHIFT))被翻譯成D的模板:

// Template that constructs a graphtype 
template GT_CONSTRUCT(uint depth, uint scheme, uint size) { 
    // notice the name of the const is the same as that of the template 
    const uint GT_CONSTRUCT = (depth | scheme | (size << GT_SIZE_SHIFT)); 
} 

Example taken from the D wiki


C/C++#undef

d:沒有足夠的翻譯,我知道