Как использовать ConditionalAttribute в 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 ++ - active , управляемый атрибут ConditionalAttribute также должен быть active . Если, с другой стороны, нативная директива препроцессора c ++ неактивна , управляемый атрибут ConditionalAttribute должен быть неактивным .

4 голоса | спросил Nina Kaprez 10 Mayam18 2018, 10:01:53

1 ответ


0
Приведенный ниже документ по стандартам довольно старый.Но предположим, что, возможно, все еще в силе.https://www.ecma-international.org/publications/files/ECMA-ST/ECMA-372.pdfПерейти к разделу 29.4.3 (вы можете найти ниже содержание об условных атрибутах в c ++ /CLI).C ++ /CLI не предоставляет эту возможность;хотя атрибуты этого типа принимаются, они не влияют на генерацию или выполнение кода.
ответил Naidu 14 Maypm18 2018, 20:18:53

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132