如何在 C++-CLI 中使用 ConditionalAttribute?
How do I use ConditionalAttribute in C++-CLI?
我有一个 C++-CLI 参考 class,它公开了一个用 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++ 预处理器指令是 active,托管的 ConditionalAttribute 也应该是 active。
另一方面,如果本机 c++ 预处理器指令是 inactive,托管的 ConditionalAttribute 应该是 inactive.
下面的标准文件很旧。但假设,可能仍然有效。
https://www.ecma-international.org/publications/files/ECMA-ST/ECMA-372.pdf
转到第 29.4.3 节(您可以在下面找到有关 c++/CLI 中的条件属性的内容)。
C++/CLI does not provide this ability; although attributes of this
type are accepted, they have no affect on code generation or
execution.
我有一个 C++-CLI 参考 class,它公开了一个用 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++ 预处理器指令是 active,托管的 ConditionalAttribute 也应该是 active。 另一方面,如果本机 c++ 预处理器指令是 inactive,托管的 ConditionalAttribute 应该是 inactive.
下面的标准文件很旧。但假设,可能仍然有效。
https://www.ecma-international.org/publications/files/ECMA-ST/ECMA-372.pdf
转到第 29.4.3 节(您可以在下面找到有关 c++/CLI 中的条件属性的内容)。
C++/CLI does not provide this ability; although attributes of this type are accepted, they have no affect on code generation or execution.