2012-04-07 9 views
0

Wenn Sie einen Makro wie dies in C:Wie marschiere ich ein Makro in C# -Skript?

#define SLICE_VERSION 20110614 

Wie dieses Makro in C# Script benutzen?

Soll ich es marshale? Wie?

Sollte ich es in C# neu definieren? Ich weiß, C# hat #define Makro nicht, aber vielleicht kann ich es einfach als statische Variable definieren.

Oder kann ich mich irgendwie darauf beziehen?

Ähnlich, wenn Sie eine globale Variable in C haben, wie verwenden Sie es in C# -Skript?

Ich habe Tutorials über Marshalling-Klassen, Strukturen, Arrays, Unionen und viele andere Dinge von C/C++ bis C# gesehen, aber ich konnte keinen Hinweis darauf finden, wie eine Konstante marshal ... Oder tun Ich muss es marshallen? Kann direkt darauf Bezug genommen werden?

BTW, fand ich das ein ziemlich gutes Tutorial über interopping auf Mono: http://www.mono-project.com/Interop_with_Native_Libraries#Introduction

Antwort

2

Soll ich neu definieren es in C#?

Ja. In C#, dann würden Sie ein const verwenden möchten:

const int SLICE_VERSION = 20110614; 

aber sagen, dass ich oft diese umbenennen es mehr C# -Standard zu machen, wie auch:

const int SliceVersion = 20110614; 

Je nachdem, wie es wird verwendet, Sie möchten explizit auch eine access modifier angeben. Abhängig von der Verwendung können Sie auch einen anderen Typ verwenden (Int32 ist möglicherweise nicht korrekt - möglicherweise möchten Sie UInt32 usw.). Ein Nachteil von Makros in C/C++ ist, dass sie nicht stark typisiert sind. Ohne die Verwendung zu sehen, gibt es keine Möglichkeit, den genauen Typ zu kennen, der hier erwartet wird.

+0

Danke! Ich werde es so machen. Die aufrufende Funktion erwartet eine Uint, also definiere ich sie einfach als const uint ... – CherryQu