>백엔드 개발 >C++ >'auto' 변수와 함께 Spirit Parser를 사용할 때 Segfault를 방지하려면 어떻게 해야 합니까?

'auto' 변수와 함께 Spirit Parser를 사용할 때 Segfault를 방지하려면 어떻게 해야 합니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-05 21:53:151022검색

How Can I Avoid Segfaults When Using Spirit Parsers with `auto` Variables?

Spirit에서 자동 변수에 파서를 할당할 때 Segfault 방지

Spirit 파서는 본질적으로 Spirit V2의 자동 변수와 함께 사용하도록 설계되지 않았습니다. 이는 임시에 대한 참조를 유지하는 기본 Proto 표현식 템플릿 때문입니다.

인라인 qi::parse() 표현식 내에서 파서와 함께 auto를 사용하면 성공적인 파싱이 가능합니다. 그러나 파서를 자동 변수에 할당한 다음 이를 qi::parse()에서 사용하면 segfault가 발생합니다.

이 제한을 피하려면 다음 대안을 고려하십시오.

  • qi::copy(): Spirit V2의 트렁크에서 사용 가능(boost_1_55_0 이상), qi::copy()는 파서의 전체 복사본을 생성할 수 있습니다.
  • boost::proto::deep_copy: 이 함수를 사용하면 Proto 표현식의 전체 복사가 가능합니다.
  • BOOST_SPIRIT_AUTO: Spirit V2 토론 포럼에 소개된 이 매크로는 작업 방법을 제공합니다. 자동 변수에 파서를 사용합니다.

자세한 내용과 예는 다음 리소스를 참조하세요.

  • [최적화와 관련된 Spirit V2 qi 버그 레벨](https://stackoverflow.com/questions/12011946/spirit-v2-qi-bug-associated-with-optimization-level)
  • [자동 내의 Spirit X3 파서 변수](https://stackoverflow.com/questions/27979404/spirit-x3-parser-within-auto-variable)

위 내용은 'auto' 변수와 함께 Spirit Parser를 사용할 때 Segfault를 방지하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.