我有一个C++-CLI的ref类,它公开了一个用C++实现的性能分析基础架构。
在C++中,我使用预处理器指令
当将这些内容暴露给托管代码时,我认为使用托管的
以下是我的尝试:
我希望实现以下目标: 如果本地的c++预处理指令是活动的,那么托管的ConditionalAttribute也应该是活动的。 另一方面,如果本地c++预处理指令是不活动的,那么托管的ConditionalAttribute也应该是不活动的。
在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++预处理指令是活动的,那么托管的ConditionalAttribute也应该是活动的。 另一方面,如果本地c++预处理指令是不活动的,那么托管的ConditionalAttribute也应该是不活动的。