TokenをDに解析するCマクロをどのように翻訳しますか? -- d フィールド 関連 問題

How translate a C macro who parse token to D?












1
vote

問題

日本語

トークンを解析するCマクロをdに翻訳することができた方法?

<事前> <コード> # define _SIZEOF(x) sz_##x # define SIZEOF(x) _SIZEOF(x) # define NEXTPTR(p,t) (((char *) p) + SIZEOF(t))

ありがとう

英語

How i could translate a C macro who parse token to D ?

# define _SIZEOF(x) sz_##x # define SIZEOF(x) _SIZEOF(x) # define NEXTPTR(p,t)  (((char *) p) + SIZEOF(t)) 

Thanks

</div
  
   
   

回答リスト

1
 
vote

うわー。それはハックです。

<コード> cast(void*) p + sz_[whichever] 、私は言うだろうか?手動で洞察するだけで

 

Wow. That's a hack.

cast(void*) p + sz_[whichever], I'd say? Just unroll it manually ..

</div
 
 
 
 
0
 
vote
<事前> <コード> template SIZEOF(T) { static if (is(T == char)) enum SIZEOF = sz_char; else static if (is(T == ...)) ... } T* NEXTPTR(T)(p) { return (((char *) p) + SIZEOF!t) }
 
template SIZEOF(T) {   static if (is(T == char))     enum SIZEOF = sz_char;   else static if (is(T == ...))     ... }  T* NEXTPTR(T)(p) {   return (((char *) p) + SIZEOF!t) } 
</div
 
 

関連する質問

1  Antlr Dターゲット - そこにある成熟した実装はありませんか?  ( Antlr d target any mature implementations out there ) 
成熟したANTLR Dターゲットはあります(または少なくともアルファとして分類されません)。おそらく、使用中の既存のSourceForgeホストターゲットの良好な動作例がありますか? ...

1  Dの配列と交差する方法は?  ( How to intersect to array in d ) 
Dの2つの文字列の違いを見つける必要があります。 std.algorithm から<コード> ContentAssistProcessor1 を使用する方法を理解できないことが必要です。 <事前> <コード> auto x = SetDifferen...

3  STL __MERGE_WITHOUT_BUFFERアルゴリズム?  ( Stl merge without buffer algorithm ) 
C ++ STLの __merge_without_buffer() で使用されているアルゴリズムのまともな高度な説明を取得できますか?いくつかの機能強化で、Dプログラミング言語でこのコードを再実装しようとしています。低レベルの詳細があまりにも多くの低レベル...

2  ANTLR V3に基づく成熟コンパイラ  ( Mature compilers based on antlr v3 ) 
AntLRに基づく言語実装を参照しているため、成熟した(そしてオープンソース)はありますか? C / C ++を出力としてターゲットにするDSL、またはC / C ++をターゲットにする言語のコードを本当に読みたくありません。私が後に私が何をターゲットにして...

163  javaとc ++の信頼できる代替手段は? [閉まっている]  ( Is d a credible alternative to java and c ) 
現在立つにつれて、この質問は私たちのQ&AMPにとって良いフィットではありません。フォーマット。私たちは事実、参考文献、または専門知識によって支持されることを期待していますが、この質問は...

1  D.のMFCのCruntimeclassの交換  ( Mfcs cruntimeclass replacement in d ) 
スタックオーバーフロー。ここで最初の投稿。 私はC ++とMFCからDに来ました。これは私の仕事だけではありません - GUIのものだけでなく、多くのMFCのマクロ(<コード> DECLARE_DYNCREATE など)と CObject クラス どのように...

2  D.における列挙型 - 安全性  ( Enumeration type safety in d ) 
D?の列挙型の安全性に関する状態と計画は何ですか 私は予想を予想しています <事前> <コード> import std.stdio: writeln; void main(string args[]) { enum E {x, y, z} ...

1  Dの配列から要素を削除する方法  ( How to remove elements from array in d ) 
tracksList_filtered 変数に int の配列を持っています。 <コード> [10422, 10681, 10421, 10392, 10616, 10589, 10581, 10423, 10743, 10213, 10613, 106...

8  Dの `Void Main`を使う  ( Using void main in d ) 
<コード> void main を使用するDコードを見ました。これは合法ですか?もしそうなら、<コード> void ( int )も返信しているのですか?なぜこれは言語で許可されていますか? ...

4  一般的なタイプの署名制約  ( Signature constraint for generic types ) 
<事前> <コード> struct S(int a, int b) { } void fun(T)(T t) { } <コード> fun は S のみで動作します。署名の制約はどのようなものですか? fun S のメンバー、および EVENT ...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有