C / C ++では、列挙型定義を含む.csファイルを#includeできます。プリプロセッサディレクティブを注意深く使用すると、C#とCの構文の違いに対処できます。
例:
#if CSharp
namespace MyNamespace.SharedEnumerations
{
public
#endif
enum MyFirstEnumeration
{
Autodetect = -1,
Windows2000,
WindowsXP,
WindowsVista,
OSX,
Linux,
// Count must be last entry - is used to determine number of items in the enum
Count
};
#if CSharp
public
#endif
enum MessageLevel
{
None, // Message is ignored
InfoMessage, // Message is written to info port.
InfoWarning, // Message is written to info port and warning is issued
Popup // User is alerted to the message
};
#if CSharp
public delegate void MessageEventHandler(MessageLevel level, string message);
}
#endif
C#プロジェクトで、条件付きコンパイルシンボル「CSharp」を設定し、そのようなプリプロセッサ定義がC /C++ビルド環境に存在しないことを確認します。
これにより、ビルド時に両方のパーツが同期されるようになるだけであることに注意してください。異なるビルドのバイナリを組み合わせて使用すると、保証は失敗します。