Предположим, что у меня есть требование, чтобы, если операция выполняется в пределах области действия, она должна быть отменена в той же области. Примером этого является ввод и выход из критического раздела.Использование открытых/закрытых фигурных скобок в макросах для обеспечения согласования в C
Чтобы принудить пользователей использовать в паре делать - отменять операции, пара макросов определяется, что использовать открывающие и закрывающие фигурные скобки:
#define BEGIN \
{ \
do_something();
#define END \
undo_something(); \
}
Конечно, есть способы, что «злой» кодировщик может обмануть эти макросы (например, добавив открывающую или закрывающую скобу), но в целом это помогает запомнить, что за BEGIN
должен следовать END
. Более того, если, например, прокомментирован существующий BEGIN
, компилятор будет жаловаться, указывая, что также необходимо удалить END
.
Я видел, что это несколько внутренних проектов. Как я уже сказал, он не предлагает 100% защиты, но может ли эта практика оказаться вредной? Это известная практика?
даже количество ошибок может остаться незамеченным. –
Как я уже сказал, есть много способов, по которым ошибки могут быть незамеченными, но я спрашиваю, может ли это на самом деле быть вредным каким-либо образом (т. Е. Создать код неожиданным образом). – Kostas
Почему бы вам просто не использовать имена 'begin()' и 'end()' для 'do_something' и' undo_something'? Или 'Begin()' и 'End()', если вы хотите, чтобы они выделялись больше, а ваш палец для заглавных букв нуждался в упражнениях. – rici