오류 메시지는 비트 디렉터리의 파일이 없음을 나타냅니다. 이 경우 가능한 두 가지 방법이 있습니다.
이 파일은 응용 프로그램에서 명시 적으로 포함 시켰습니다. 표준 헤더가 아니기 때문에 그 때 당신의 잘못이고, 표준 포함 경로에 없을 수도 있습니다. 이렇게하지 마십시오. OS와 상호 작용하는 데 필요한 메커니즘의 대부분은 표준 라이브러리 (또는 특히 이식성을 위해 설계된 다른 라이브러리)에 있으므로 특정 STL 구현 비트를 사용하는 것보다 나은 솔루션을 제공합니다.
이 파일은 STL의 일부 표준 헤더에서 간접적으로 포함됩니다. 문제는 Fedora에서의 STL 구현이 이식 가능하고 BSD를 일부 지원할 수 있다는 것입니다. 헤더에 다음 코드가있을 수 있습니다.
#ifdef __BSD__
// BSD-specific include file
#include <bits/stl_alloc.h>
#elsif defined __LINUX__
#include <bits/linux_alloc.h>
#endif
일반적으로 Linux에서 개발 된 프로그램에는 올바른 파일이 포함됩니다. 그러나 프로그램이 자체적으로에 BSD 지문을 정의했을 수 있으며이 지문은 BSD 관련 부분을 포함해야하므로 STL 구현시 잘못 해석 될 수 있습니다. BSD에서만 빌드했다면, 전혀 눈치 채지 못했을 것입니다.
stl_alloc.h는 표준 C++ 헤더 파일이 아니며 단지 그것을 잡으면 거의 전혀 도움이되지 않습니다. 응용 프로그램을 이식하려면 대상 플랫폼에 동일한 소스 코드 파일 만 있으면됩니다. –
비트 하위 디렉토리에는 아무 것도 포함하면 안됩니다. 표준은 오직 주 디렉토리에있는 파일들만 정의합니다. 사용되는 하위 디렉토리는 구현 세부 사항입니다. –
아마도 내가 분명히해야 할 것입니다 -이 파일을 찾는 헤더 파일이 있습니다. 이 헤더 파일이 없으면 모든 종류의 정의되지 않은 문제가 발생합니다. 그래서 진짜 궁금한 점은 대신 구현할 수있는 stl_alloc과 동일한 기능을하는 Linux가 있다는 것입니다. – Justin