【问题标题】:How to marshal a macro in C# script?如何在 C# 脚本中编组宏?
【发布时间】:2012-04-07 20:24:09
【问题描述】:

如果你在 C 中有这样的宏:

 #define SLICE_VERSION 20110614

如何在 C# Script 中使用这个宏?

我应该编组它吗?怎么样?

我应该在 C# 中重新定义它吗?我知道 C# 没有#define 宏,但也许我可以将其定义为静态变量。

或者我可以参考一下吗?

同样,如果你在 C 中有一个全局变量,你如何在 C# 脚本中使用它?

我已经看过关于编组类、结构、数组、联合以及从 C/C++ 到 C# 的许多其他内容的教程,但我无法找到任何关于如何编组常量的提示......或者我是一定要编组吗?可以直接引用吗?

顺便说一句,我发现这是一个关于 Mono 互操作的非常好的教程:http://www.mono-project.com/Interop_with_Native_Libraries#Introduction

【问题讨论】:

    标签: c# macros interop dllimport


    【解决方案1】:

    我应该在 C# 中重新定义它吗?

    是的。在 C# 中,您需要使用 const:

    const int SLICE_VERSION = 20110614;
    

    话虽如此,我也会经常重命名它以使其更符合 C# 标准:

    const int SliceVersion = 20110614;
    

    根据它的使用方式,您也希望明确指定access modifier。此外,根据使用情况,您可能希望使用不同的类型(Int32 可能不正确 - 您可能需要 UInt32 等)。 C/C++ 中的宏的一个缺点是它们不是强类型的,因此在没有看到用法的情况下,无法知道此处预期的确切类型。

    【讨论】:

    • 谢谢!我会这样做。调用函数需要一个 uint,所以我将其定义为 const uint...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-02
    • 2020-09-26
    • 1970-01-01
    • 2011-08-08
    • 1970-01-01
    • 2016-07-15
    相关资源
    最近更新 更多