문제

Boost :: Spirit의 QuickStart 안내서를 따르고 있으며 다음과 같이 포함 할 때이 컴파일러 경고를받습니다.

(빠른 시작 가이드: http://spirit.sourceforge.net/distrib/spirit_1_8_5/libs/spirit/doc/quick_start.html , 프로그램의 전체 소스와 함께 여기서 컴파일하려고합니다. http://spirit.sourceforge.net/distrib/spirit_1_8_5/libs/spirit/example/fundamental/number_list.cpp)

편집 : 또한 권장 Classic_core.hpp 및 Classic_push_back_actor.hpp 헤더로 컴파일하려고하면 다음 컴파일러 오류가 발생합니다.

test7.cpp: In function 'bool parse_numbers(const char*, __gnu_debug_def::vector<double, std::allocator<double> >&)':
test7.cpp:18: error: 'real_p' was not declared in this scope
test7.cpp:18: error: 'push_back_a' was not declared in this scope
test7.cpp:23: error: 'space_p' was not declared in this scope
test7.cpp:23: error: 'parse' was not declared in this scope
도움이 되었습니까?

해결책

편집 :] 원래의 답변은 잘못되었습니다. 특히 링크가 끊어졌습니다. Boost의 현재 버전 (2012-02-24 이후)은 1.49.0입니다.

언급 된 경고는 결과입니다 #include <boost/spirit.hpp> 이는 더 이상 사용되지 않은 헤더입니다. 그러나 웹의 오래된 예는이 양식을 사용합니다. 시작하려면 시도하십시오 튜토리얼을 향상시킵니다. 올바른 포함 및 네임 스페이스가 표시되면 대부분의 기존 예제를 쉽게 변환 할 수 있습니다.

Old Answer :

Boost 1.39 이상 (SVN을 통해)을 사용해야합니다. 이 프레젠테이션은 다음과 같습니다.

요컨대, 새로운 일을하는 방법이 있으며 이는 사용할 네임 스페이스입니다.

  • boost::spirit:qi (파서)
  • boost::spirit::karma (발전기 lib)

공식 릴리스는 1.40이므로 아마도 DOC가 업데이트 될 것입니다.

편집하다: 부스트 SVN 저장소의 문서 일을하고 있으며 아마도 새로운 건축물을보다 충실한 방식으로 반영 할 것입니다.

다른 팁

클래식 헤더를 포함시킬 때 파서는 부스트 :: spirit :: 클래식 네임 스페이스에 있습니다. 노력하다:

네임 스페이스 부스트 사용 :: spirit :: classic;

라이브러리에 클래스/헤더/메소드 등을 나타냅니다. 더 이상 사용되지 않으면 라이브러리의 관리자가 기능을 유지하는 것을 막을 가능성이 높으며 향후 기능을 제거 할 수 있습니다. 나중에 제안 된 헤더로 전환하는 것이 좋습니다. 따라서 앞으로 두통에서 자신을 구할 것을 권장합니다.

새 헤더는 기능을 처리하는 방법이 약간 다를 수 있으므로 일부 코드를 변경해야 할 수도 있습니다.

(나는 부스트에 대해 많이 모른다, 이것은 일반적인 의견 일뿐입니다)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top