私は他の開発者が自分のDLLを拡張機能として書くことを可能にする一連のDLLを書いています。 Delphiのコードでは、私は広くenumとenumを使います。私はDLLを使ってenumを使用します。 Delphiでコンパイルされたさまざまなプロジェクト間でDLLを使って列挙型を安全に使用できることはわかっています。しかし、私は様々な言語にどれくらい適応できるかについてはわかりません。相互参照境界で列挙型を使用するのは安全ですか?
他のさまざまな言語をサポートしている間にDLLを使用してenumを使用することは安全ですか?または、代わりに整数としてキャストする必要がありますか?
列挙型は、序数として渡される必要があるだろう、とあなたのDelphiのコードが使用する必要があります[{$ MINENUMSIZE}](http://docwiki.embarcadero.com/RADStudio/Berlin/en/Minimum_enumeration_size_%28Delphi%29)へプラットフォーム間で互換性があるように適切なサイズの序数を使用していることを確認してください。 Delphiは列挙の要素の数に応じて異なるバイトサイズの値に列挙します。これにより、非Delphiコードで前後するいくつかの問題が発生する可能性があります。 –
Cの列挙型はint型であるため、interopの最小列挙サイズは4です。 –
@David:C99によれば、コンパイラがそれを望むならば、intより小さいかもしれません。しかし、実際には、Windowsでは、それらはすべて4バイト(int)のサイズになります。 –