我有一个 C++-CLI ref 类,它公开了一个用 C++ 实现的分析基础设施。

在 C++ 中,我有预处理器指令 PROFILING_ENABLED 来确定侵入式分析函数是否在代码中。

当将这些暴露给托管代码时,我认为使用托管 ConditionalAttribute 是合适的。但我在语法上挣扎。

这是我的尝试:

#ifdef PROFILING_ENABLED

// c++ macros are defined and active on the project level, I would like the
// conditional attribute to be active as well.

#define MANAGED_PROFILING_ENABLED

// how do I define the managed conditional "MANAGED_PROFILING_ENABLED" in C++-CLI?



#endif

    public ref class Profiler
    {
    public:
        [ConditionalAttribute("MANAGED_PROFILING_ENABLED")] // this compile but always inactive
        static void PushRange(System::String ^ name, Color color);

        [ConditionalAttribute("MANAGED_PROFILING_ENABLED")]
        static void PopRange();
    };

我想实现以下目标:
如果 native c++ 预处理器指令是 active ,则托管 ConditionalAttribute 也应该是 active
另一方面,如果 native c++ 预处理器指令是 inactive ,则托管 ConditionalAttribute 应该是 inactive

最佳答案

下面的标准文件很旧。但假设,可能仍然有效。

https://www.ecma-international.org/publications/files/ECMA-ST/ECMA-372.pdf

转至第 29.4.3 节(您可以在下面找到有关 c++/CLI 中条件属性的内容)。

关于c++ - 如何在 C++-CLI 中使用 ConditionalAttribute?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50267351/

10-10 21:27