호환성

UCRT(유니버설 C 런타임 라이브러리)는 C++ 규칙에 필요한 대부분의 C 표준 라이브러리를 지원합니다. 특정 예외를 제외하고 C99(ISO/IEC 9899:1999) 라이브러리를 구현합니다.

  • complex.h>의 <strict 형식 호환성
  • aligned_alloc- Windows 운영 체제에서 정렬된 할당을 지원하지 않으므로 구현되지 않을 수 있습니다. 대신 비표준 _aligned_malloc을 사용합니다.
  • strerrorlen_s
  • stdatomic.h의 <atomic 지원>
  • threads.h의 <스레딩 지원>

UCRT는 또한 POSIX.1(ISO/IEC 9945-1:1996, POSIX 시스템 애플리케이션 프로그램 인터페이스) C 라이브러리의 큰 하위 집합을 구현합니다. 그러나 특정 POSIX 표준을 완전히 준수하지는 않습니다. UCRT는 표준에 속하지 않는 여러 Microsoft 관련 함수 및 매크로도 구현합니다.

Microsoft Visual C++ 구현과 관련된 함수는 vcruntime 라이브러리에 있습니다. 이러한 함수의 대부분은 내부용이며 사용자 코드에서 호출할 수 없습니다. 일부는 디버깅 및 구현 호환성에 사용하도록 문서화되어 있습니다.

C++ 표준은 구현에 대한 전역 네임스페이스에 밑줄로 시작하는 이름을 예약합니다. POSIX 함수와 Microsoft 관련 런타임 라이브러리 함수는 모두 전역 네임스페이스에 있지만 표준 C 런타임 라이브러리에는 포함되지 않습니다. 이러한 함수의 기본 Microsoft 구현에 선행 밑줄이 있는 이유입니다. 이식성을 위해 UCRT는 기본 이름도 지원하지만 기본 이름을 사용하는 코드를 컴파일할 때 Microsoft C++ 컴파일러가 사용 중단 경고를 실행합니다. 함수 자체가 아니라 기본 이름만 사용되지 않습니다. 이 경고를 표시하지 않으려면 원래 POSIX 이름을 사용하는 코드에서 헤더를 포함하기 전에 _CRT_NONSTDC_NO_WARNINGS 을 정의합니다. C 표준은 헤더 파일에서 비표준 이름을 허용하지 않으므로 기본적으로 /std:c11 POSIX 함수, 형식 및 /std:c17 매크로에 대한 기본 이름을 노출하지 않습니다. 이러한 이름이 필요한 경우 해당 이름을 노출하도록 정의 _CRT_DECLARE_NONSTDC_NAMES 합니다.

표준 C 라이브러리의 특정 함수에는 잘못 사용된 매개 변수 및 확인되지 않은 버퍼로 인한 안전하지 않은 사용 기록이 있습니다. 이러한 함수가 코드에서 보안 문제의 원인이 되는 경우가 많습니다. Microsoft는 매개 변수 사용을 확인하는 이러한 함수의 안전한 버전 집합을 만들었습니다. 런타임에 문제가 검색되면 잘못된 매개 변수 처리기를 호출합니다. 기본적으로 Microsoft C++ 컴파일러는 더 안전한 변형을 사용할 수 있는 함수가 사용될 때 사용 중단 경고를 실행합니다. 코드를 C++로 컴파일할 때 1로 정의 _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 하여 대부분의 경고를 제거할 수 있습니다. 이 매크로를 사용하면 템플릿 오버로드가 이식 가능한 소스 코드를 기본 동안 더 안전한 변형을 호출할 수 있습니다. 이 경고를 표시하지 않으려면 이러한 함수를 사용하는 코드에서 헤더를 포함하기 전에 _CRT_SECURE_NO_WARNINGS 를 정의합니다. 자세한 내용은 CRT의 보안 기능을 참조하세요.

설명서 내에서 특정 함수에 대해 언급된 경우를 제외하고 UCRT는 Windows API와 호환됩니다. 특정 함수는 Windows 스토어 또는 UWP(유니버설 Windows 플랫폼) 앱에서 지원되지 않습니다. 이러한 함수는 유니버설 Windows 플랫폼 앱에서 지원되지 않는 CRT 함수에 나열됩니다.

제목 설명
UWP 앱, Windows 런타임 및 C 런타임 UCRT 루틴이 유니버설 Windows 앱 또는 Microsoft Store 앱과 호환되지 않는 경우를 설명합니다.
ANSI C 규칙 UCRT의 표준 준수 이름을 설명합니다.
UNIX 프로그램을 UNIX에 이식하는 작업에 대한 지침을 제공합니다.
WINDOWS 플랫폼(CRT) CRT에서 지원하는 운영 체제를 나열합니다.
이전 버전과의 호환성 이전 CRT 이름을 새 CRT 이름에 매핑하는 방법을 설명합니다.
C 런타임(CRT) 및 C++ STL(표준 라이브러리) .lib 파일 CRT 라이브러리 파일(.lib) 및 관련된 컴파일러 옵션에 대한 개요를 제공합니다.