В настоящее время я пытаюсь решить проблему, когда хочу предотвратить переопределение переменных. В настоящее время мне удалось избежать переопределения с помощью вставки токена, которая может вставить любую заданную вещь в ваше имя переменной. Однако мне не нужно более 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 Заявление] а>
Мой вопрос: почему я должен не этого делать? Есть ли кто-нибудь, кто использует это утверждение или может сказать мне правильный вариант использования этого утверждения?
Единственный (частичный/спекулятивный) ответ, который я смог найти, был опубликован [здесь, на ТАК]
EDIT 1: Что я действительно пытаюсь сделать:
{
Logmacro(); // Logmacro() indents and logs
Logmacro(); // Logmacro() should only log
{
Logmacro(); // Logmacro() indents and logs
}
}
Foo()
вел себя именно так? Мое первоначальное впечатление, что это плохая идея, потому что это было бы очень необычным поведением и, следовательно, было бы очень удивительно для любого, кто читает код. Опять же, могут быть лучшие способы решить вашу конечную цель, чем этот дизайн, на котором вы, кажется, остановились. - person jamesdlin   schedule 14.07.2020