회사는 VS willy-nilly를 업그레이드하지 않습니다. 예를 들어, 몇 년 동안 배송하지 않을 프로젝트에서 2010SP1을 사용하고 있습니다. 최신 버전을 사용한다는 것은 IDE에 새로운 라이센스를 구매하고, 우리가 사용하는 플러그인에 새로운 라이센스를 구매할 가능성이 있으며, 아직 해결되지 않은 일부 중단 버그를 위험에 빠뜨릴 수 있음을 의미합니다. 우리는 이미 2010 년에 비용을 지불했으며 2010 년은 우리의 요구에 부합 할 것임을 알고 있습니다.
나는 때때로 나를 귀찮게한다. 저는 최신 C ++ 11 / 14 지원, AMP 지원 및 개선 된 최적화를 원하지만 이러한 "새롭고 빛나는"업그레이드 정신 은 더 크고 심각한 프로젝트와 잘 맞지 않습니다.
대부분의 회사 엔터티는 Visual Studio, Office, Windows, Perforce 등 모든 소프트웨어를 업데이트하는 데 매우 보수적입니다. 오늘날 게임에서는 Visual Studio 2005 사용이 매우 드물지만 2008 년은 여전히 흔합니다. 2012 년을 사용하는 사람은 거의 없습니다. 2012 년의 흡수가 한 번에 일어나지 않을 것이므로 Visual Studio의 다음 인기 버전은 2013 년 또는 2014 년일 것입니다.
예를 들어 Redhat Enterprise 또는 Ubuntu LTS의 릴리스 케이던스에 비해 일반적인 매니아 지향 Linux 배포판이 얼마나 빨리 버전을 업데이트하는지 확인하십시오. 개인 사용자와 취미 사용자는 업그레이드와 애호가가 종종 그에 대한 요구를 더 쉽게 정당화 할 수 있지만 일반적으로 비즈니스는 가능한 한 적은 변화를 원합니다.
오늘날의 또 다른 요소는 XBox 360 호환성입니다. 특히 XBox 호환성을 위해 하나가 필요한 경우 두 가지 버전의 IDE / 컴파일러를 구입하여 설치하는 것은 어리석은 일입니다. 게임에 인기있는 다음 버전의 VS는 XBox One이 개발 키트의 릴리스 버전에 대해 권장하는 컴파일러에 따라 크게 달라집니다 (2012는 출시 게임에 사용되는 베타 개발자 키트에 사용되지만 2013 년 이후에는 권장됩니다). 출시 제목).
컴파일러에서 사용하는 런타임과 관련하여 사용중인 컴파일러와 정확히 일치해야합니다. 이것의 일부는 C와 C ++의 작동 방식 때문입니다. 인터페이스는 헤더 파일로 정의되며, 잘라 내기 및 붙여 넣기를 수행하는 멋진 방법입니다. 전시회 A를 고려하십시오.
void foo(char* name, int length);
이제 전시회 B를 고려하십시오.
void foo(int length, char* name);
이러한 C 함수가 두 개의 서로 다른 버전의 런타임에 포함되어 있으면 둘 다 기호 _foo
이지만 하나를 사용하도록 컴파일 된 코드는 다른 하나에서는 분명히 작동하지 않습니다. 호환성 문제는 일반적으로 조금 더 복잡하고 미묘하지만 최종 결과는 여전히 동일합니다. VS2005로 컴파일 된 코드에는 VS2005 런타임의 작동 방식 만 설명하는 VS2005의 헤더가 있습니다. VS2012에는 완전히 다른 런타임을 대상으로하는 완전히 다른 헤더가 제공됩니다.
Microsoft는 이전 버전을 대상으로하는 것을 지원하지 않습니다. 그들은 런타임과 함께 기존 헤더를 계속 제공하고 계속 유지해야했습니다. Windows의 우수한 DLL 사용 사례를 통해 개발자가 다른 런타임을 사용하여 라이브러리를 혼합 할 수 있기 때문에 상대적으로 그럴만한 이유가 거의 없습니다. VS2012가있는 경우 라이브러리와 몇 가지 쉬운 규칙을 따르는 한 VS2005로 만든 라이브러리와 계속 연결할 수 있습니다.
GNU / Linux와 같은 플랫폼은 이러한 문제를 피하기 위해 약간의 노력을 기울이지 만 때로는 더 심도있게 진행되었습니다. 나는 여전히 libc5에서 glibc 로의 전환 또는 빈번한 libstdc ++ 휴식 시간을 회상합니다 (이는 Linux / UNIX 개발자가 수년 동안 C ++ 주제에 대해 상대적으로 냉담한 이유 중 하나입니다).
Windows에는라는 하위 수준의 "일반"C 런타임이 포함 MSVCR.DLL
되어 있지만 각 버전의 컴파일러에는 자체 교체 (예 :)가 포함되어 있습니다 MSVCRR110.DLL
. 일반 버전 만 사용하려고 노력할 수는 있지만 각 버전의 Visual Studio (및 계속해서 변화하는 C ++ 지원)로 변경되는 대부분의 C ++ 지원 루틴을 포함하여 많은 기능이 누락되었습니다. 실제로 무 종속 응용 프로그램 (복구 도구, OS 도구, 보안 도구 등)을 만들려고하지 않는 한 일반적으로 노력할 가치가없고 기능을 잃어 버리지 않습니다.
즉, 각 Visual Studio에는 자체 런타임 라이브러리가 있으며 해당 버전으로 컴파일 된 응용 프로그램을 사용해야합니다. 게임은 일반적으로 가장 최신의 컴파일러보다 적게 사용되므로 오래된 런타임이 필요합니다.