2012-03-14 1 views
0

this question에서 설명한 것과 같은 경고가 나타납니다. 대답은 작동하지만 XP, Vista 및 7에서 프로그램을 실행할 수 있어야하므로 Windows 버전을 XP로 정의하면 다른 시스템에서 문제가 발생할 수 있습니다.boost :: asio를 사용하는 프로그램을 빌드 할 때 경고

특정 버전을 정의 했더라도 모든 C++ 프로젝트에서이 버전을 설정해야합니다. 이는 번거 로움입니다. 나는 모든 C++ 프로젝트에서 올바른 전 처리기 정의를 가진 XP, Vista 및 7 용 별도의 빌드 구성을 만드는 방법을 생각했습니다. 보다 우아한 솔루션이 있습니까?

답변

1

API는 이전 버전과 호환되므로 지원하려는 버전이 인 으로 설정해야합니다. 귀하의 경우에는 XP 이상인 경우 0x0501으로 설정하십시오. Win2k도 지원하려면 0x0500으로 설정하십시오.

마이크로 소프트는 새로운 운영체제가 API를 깨뜨리지 않도록 많은 노력을 기울였으며, 여전히 boost.asio를 사용하여 추상화 계층을 추가로 확보했다.

다른 빌드 구성의 아이디어는 나쁘지 않지만 지원하려는 모든 버전에서 사용할 수없는 새로운 기능을 사용하려는 경우에만 효과가 있습니다. 예를 들어, Boost.asio는 Win32 API에서 Winsock의 하위 집합 만 사용하므로 여기서는 아무 것도 얻을 수 없습니다.