나는 Visual Studio에서 Windows에서 first tutorial of ROS을 할 노력하고있어 2015식별자는 "__builtin_expect"(승리 튜토리얼 - 토커 예에 ROS 중) 정의되지는
먼저 나는 새로운 WIN 32 콘솔 응용 프로그램을 작성하고 복사 코드는 here입니다. 그런 다음이 가이드에서 설명한대로 프로젝트를 구성했습니다. 디버깅이 몇 가지 오류를했다 동안 :
- 식별자 "
__builtin_expect
"(내 프로그램의 이름입니다) 파일service_client.h
및TestTalker.cpp
에 정의되어 있지 않습니다. - 하지 오픈 소스 파일 "SYS/time.h는"
wiki.ros.org 실행에서 SDK, 나는 그것을 테스트 할 수 있습니다. 나는 무엇이 잘못되었는지 전혀 모른다. 누군가 나를 도울 수 있기를 바랍니다.
미리 감사드립니다.
이것은 다릅니다 :'__builtin_expect'는 힌트가 잘못되었을 때'__assume'이 UB로가는 반면,'__builtin_expect'는 표현식이 가장 자주 또는 더 자주 참일 것이라는 힌트를 컴파일러에 제공합니다. ['__assume' doc] (https://msdn.microsoft.com/en-us/library/1b3fsfxw%28VS.80%29.aspx)에서 : "_ 컴파일러가'__assume'에 기초한 코드를 생성하기 때문에, 그 코드는 실행시에'__assume' 명령문 내부의 표현식이 거짓이면 올바르게 실행되지 않습니다 ._ – YSC
'#define __builtin_expect (x, y)'를 제안하고 최적화 및 분기 예측을 수행하도록합니다. 관련 : [알려진보다 일반적인 경로에 대한 분기 최적화] (http://stackoverflow.com/q/35938249/5470596). – YSC
@YSC 식별자의 이중 밑줄은 구현을 위해 예약되어 있습니다. – jotik