如何在 C++-CLI 中使用条件属性?



我有一个 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();
};

我想实现以下目标: 如果本机 c++ 预处理器指令处于活动状态,则托管条件属性也应处于活动状态另一方面,如果本机 c++ 预处理器指令处于非活动状态,则托管条件属性应处于非活动状态

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

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

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

C++/CLI 不提供此功能;尽管此功能的属性 类型被接受,它们对代码生成或 执行。

相关内容

  • 没有找到相关文章

最新更新