У меня есть класс 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 должен быть неактивен .