범위 내에서 작업이 수행되면 동일한 범위에서 실행 취소해야한다는 요구 사항이 있다고 가정합니다. 예를 들어 중요한 부분에 들어가고 떠나는 것입니다. - 짝을 사용하는 사용자를 강제하기 위해매크로에서 열기/닫기 중괄호를 사용하여 C에서 페어링 적용
할 작업을 실행 취소, 매크로 한 쌍의 열고 닫는 중괄호 사용하는 정의 : 방법이 있습니다, 물론
#define BEGIN \
{ \
do_something();
#define END \
undo_something(); \
}
을하는 "악성"코더 수 (예 : 여는 또는 닫는 중괄호를 추가하여) 매크로를 트릭하지만 일반적으로 BEGIN
뒤에 END
이 와야한다는 것을 기억하는 데 도움이됩니다. 또한 예를 들어, 기존 BEGIN
이 주석 처리 된 경우 컴파일러는 END
도 제거해야 함을 나타내는 불만을 표시합니다.
본 내용은 여러 가지 내부 프로젝트입니다. 내가 말했듯이, 그것은 100 % 보호를 제공하지는 않지만이 방법이 어떤 식 으로든 해를 입을 수 있습니까? 이것은 잘 알려진 방법입니까?
이보다 양이 발견되지 않을 수 있습니다
당신은 여러 블록을 사용하기 위해 레이블 이름을 전달할 수 있습니다. –
내가 말했듯이, 오류가 발견되지 않을 수있는 많은 방법이 있지만 실제로 어떤 식 으로든 해를 끼칠 수 있는지 (예 : 예상치 못한 방식으로 코드 생성) 묻는 중입니다. – Kostas
왜'do_something'과'undo_something'에'begin()'과'end()'를 사용하지 않으시겠습니까? 만약 당신이 더 두드러지고 자본화 손가락이 운동하기를 원한다면'Begin()'과'End()'를 사용하십시오. – rici