2016-09-29 9 views
0

プロジェクトでは、VB.net列挙型リストにC++コンバータで記述された列挙型リストが必要です。これまでのところ、C++リストにある#define列挙型を除いてすべてがOKです。ここで私は変換することwhantものです:C++ #define enumの作成をvb.netに変換する

typedef enum 
{ 
#define EnumValue(a,b) a, b=a+255 
EnumValue(PARAM_Start,PARAM_END) 
} ID; 

あなたは、これは、実行時に255の列挙型の値を作成し、見ることができるように。これはVB.netでどのように行われますか?後述するように

EDIT /代わりに、それはしかしPARAM_ENDに255意味のオフセット余分を与えちょうど2つの列挙型を作成し、私はそれが255の列挙型を作成するだろうと考えにより、間違った仮定を作っ30-09-2016
を解決しよう:場合私は3つのenumを持っています、これらのenumのインデックスは0,1,3です。今度はENUM_3のインデックスを10から始めるには、ちょうどENUM_2 + 8を追加してください。ENUM_3はインデックス10から始まります。

ありがとうございました。 :-)

+3

それは実際には、それぞれ値0と255の、2、PARAM_StartとPARAM_ENDを作成します。 –

+0

VB .NETには '#define'の定義はありません。 –

+0

@AlexB:単純な#define定数と同等のものがありますが、#defineマクロはありません。 –

答えて

1

VBと同等である:あなたが述べたように

Public Enum ID 
PARAM_Start 
PARAM_END=PARAM_Start+255 
End Enum 

ない255個の値が、ちょうど2

0

コメントで述べたように、私は2 ...

を作成する++あなたのCは、あなたがT4 Text Templateを使用することができると思う?

あなたのVBプロジェクトにTextTemplate.ttを追加し、このコードでそれを埋めます:

<#@ template debug="false" hostspecific="true" language="C#" #> 
<#@ import namespace="System" #> 
<#@ output extension=".vb" #> 

Namespace MyNamespace 

    Public Enum MyEnum 
    <# 
    for (int i = 1; i < 256; i++) 
    { 
    #> 
    Number<#= i #> = <#= i #> 
    <# } #> 
    End Enum 

End Namespace 

ソリューションをビルドすると、タイプが生成されます。

+0

@ Gill Bates、あなたは正しいと思います。それに気付かなかった。それでも私は意味/目標がワットであることをかなり理解していませんか? 0から255までの2つの下位値を持つ列挙型を宣言するのですか? @ブランドン、スニペットありがとう、私はMSDNのドキュメントを読んでみてください。 – Gforse

+0

リンクは参考用です。コードを '.tt'ファイルにコピーして、あなたのソリューションを構築することができます。 – Brandon

関連する問題