Как правильно использовать __if_not_exists и __if_exists - PullRequest
0 голосов
/ 14 июля 2020

В настоящее время я пытаюсь решить проблему, при которой я хочу предотвратить переопределение переменных. В настоящее время мне удалось избежать переопределения с помощью пасты токена, которая может «вставить» любую заданную вещь в ваше имя переменной. Однако я не хочу, чтобы в одной области было более 1 переменной.

Текущее решение (эти переменные вставляются макросом, я не определяю их сам):

{
  mytype mt_2; // 2 is pasted
  mytype mt_3; // 3 is pasted
}

Я нашел __if_not_exists и думаю, что это может быть решением моей проблемы, однако в документах Microsoft указано

Примените оператор __if_not_exists к идентификаторам как внутри, так и вне класса. Не применять оператор __if_not_exists к локальным переменным.

[__ if_not_exists Statement]

Мой вопрос: зачем мне не делать это? Есть ли кто-нибудь, кто использует этот оператор или может сказать мне, как правильно его использовать?

РЕДАКТИРОВАТЬ 1: Чего я действительно пытаюсь достичь sh:

{
 Logmacro(); // Logmacro() indents and logs
 Logmacro(); // Logmacro() should only log
  {
    Logmacro();  // Logmacro() indents and logs
  }

}

1 Ответ

1 голос
/ 14 июля 2020

Я предлагаю вообще не пытаться их использовать.

См. Сообщение Раймонда Чена: Печальная история пользовательского ключевого слова __if_exists в Visual Studio

Кроме того, попытка нарушать требования к документации бесполезно. Это может работать в некоторых случаях, но быть fr agile.

...