如何在C++-CLI? 我有一个C++ -CLI REF类,它公开了C++中的一个概要基础结构。 在C++中,我有预处理器指令 PrimuleGIN启用< /COD>来确定侵入式分析功能是否在代码中。

如何在C++-CLI? 我有一个C++ -CLI REF类,它公开了C++中的一个概要基础结构。 在C++中,我有预处理器指令 PrimuleGIN启用< /COD>来确定侵入式分析功能是否在代码中。,c++,c++-cli,managed,C++,C++ Cli,Managed,当向托管代码公开这些内容时,我认为使用托管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

当向托管代码公开这些内容时,我认为使用托管
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++预处理器指令是“强”>“不活跃”<强>,则托管条件属性应该是<强>不活动>

< P>下面的标准文档相当旧。但假设,可能仍然有效

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

C++/CLI不提供此功能;虽然这个 如果接受类型,则它们对代码生成或 执行


我会进一步澄清。所有的编译,C++预处理器指令是肯定的。只有“管理条件”属性始终为false。根据C++预处理器指令,我希望它是活动的。@ AdRiaRoRePeTi我做了一些编辑,希望这会使意图更加清晰。C++ + CLI编译器没有管道来做[FAILL]的事情,你可以用C++的方式来做。使用#ifdef.@HansPassant当我在C++/CLI上使用[Conditional]时,它确实会起作用。缺少的只是字符串条件参数。不管怎样,我现在用的是ifdef。