2012-04-07 14 views
0

あなたがCで、このようなマクロがある場合:C#スクリプトでこのマクロを使用する方法C#スクリプトでマクロをマーシャリングする方法は?

#define SLICE_VERSION 20110614 

を?

私はそれをマーシャリングする必要がありますか?どうやって?

C#で再定義する必要がありますか?私はC#が#defineマクロを持っていないことを知っていますが、多分私はそれを静的変数として定義することができます。

どういうわけか言えますか?

同様に、Cでグローバル変数を使用している場合、C#スクリプトでどのように使用しますか?

クラス、構造体、配列、共用体、その他のC/C++からC#へのマーシャリングに関するチュートリアルを見てきましたが、定数をどのようにマーシャリングするかについてのヒントは見つかりませんでした。私はそれをマーシャリングする必要がありますか?それは直接参照することはできますか?

はところで、私はこのにモノにinteroppingについてかなり良いチュートリアルが見つかりました:http://www.mono-project.com/Interop_with_Native_Libraries#Introduction

答えて

2

私はC#で、それを再定義する必要がありますか?

はい。 C#では、あなたはconstを使用したいと思います:

const int SLICE_VERSION = 20110614; 

言われて、私は多くの場合だけでなく、それ以上のC# - 標準にするために、この名前を変更するだろうと:

const int SliceVersion = 20110614; 

の方法に応じてそれが使用されている場合は、access modifierを明示的に指定したいとします。また、使用方法によっては、異なるタイプを使用することもできます(Int32は正しくない可能性があります - UInt32などが必要な場合があります)。 C/C++のマクロの1つの欠点は、それらが強く型付けされていないことです。したがって、使用法を見ていないと、ここで期待される型を正確に知る方法がありません。

+0

ありがとうございます!私はこのようにします。呼び出し関数はuintを期待しているので、const Uintとして定義します。 – CherryQu

関連する問題