Intel C++ compiler on Windows catastrophic error: cannot open source file "bits/unique_ptr.h"
Intel C++ compiler on Windows catastrophic error: cannot open source file "bits/unique_ptr.h"
我正在尝试使用 Intel C++ 编译器 19.0 在 Windows 上编译我的代码。我正在使用以下调用:
icl /Qstd=c++11 c:\Users\Bernardo\Downloads\HW1_6200\ProjectAmina\WaterPaths\src\SystemComponents\Utility\Utility.cpp
即使此代码在 Linux 系统上编译,当我尝试在 Windows 上编译它时,我得到以下错误:
c:\Users\Bernardo\Downloads\HW1_6200\ProjectAmina\WaterPaths>icl /Qstd=c++11 c:\Users\Bernardo\Downloads\HW1_6200\ProjectAmina\WaterPaths\src\SystemComponents\Utility\Utility.cpp
Intel(R) C++ Intel(R) 64 Compiler for applications running on Intel(R) 64, Version 19.0.3.203 Build 20190206
Copyright (C) 1985-2019 Intel Corporation. All rights reserved.
Utility.cpp
c:\Users\Bernardo\Downloads\HW1_6200\ProjectAmina\WaterPaths\src\SystemComponents\Utility\Utility.h(10): catastrophic error: cannot open source file "bits/unique_ptr.h"
#include <bits/unique_ptr.h>
^
compilation aborted for c:\Users\Bernardo\Downloads\HW1_6200\ProjectAmina\WaterPaths\src\SystemComponents\Utility\Utility.cpp (code 4)
出于某种原因,我的标准库似乎没有智能指针。我错过了什么?
std::unique_ptr
的正确头文件是
#include <memory>
header <bits/unique_ptr.h>
是 GCC 标准库的内部实现细节。它是构成 <memory>
.
实现的 header 之一
因此看起来您的代码试图包含 GCC 标准库中的 header,如果您使用 GCC 的标准库进行编译,它可以正常工作,但在使用不同的标准库时则不行。这应该是显而易见的。您不能包含在不同实现中不存在的 header。
用户代码应该永远不要尝试直接包含<bits/unique_ptr.h>
,因为它甚至不存在于 C++ 标准库的其他实现中。要包含的正确 header 是 <memory>
。需要修复代码以停止尝试包含特定实现的内部实现细节。
<bits/unique_ptr.h>
中甚至有评论这样说:
/** @file bits/unique_ptr.h
* This is an internal header file, included by other library headers.
* Do not attempt to use it directly. @headername{memory}
*/
我正在尝试使用 Intel C++ 编译器 19.0 在 Windows 上编译我的代码。我正在使用以下调用:
icl /Qstd=c++11 c:\Users\Bernardo\Downloads\HW1_6200\ProjectAmina\WaterPaths\src\SystemComponents\Utility\Utility.cpp
即使此代码在 Linux 系统上编译,当我尝试在 Windows 上编译它时,我得到以下错误:
c:\Users\Bernardo\Downloads\HW1_6200\ProjectAmina\WaterPaths>icl /Qstd=c++11 c:\Users\Bernardo\Downloads\HW1_6200\ProjectAmina\WaterPaths\src\SystemComponents\Utility\Utility.cpp
Intel(R) C++ Intel(R) 64 Compiler for applications running on Intel(R) 64, Version 19.0.3.203 Build 20190206
Copyright (C) 1985-2019 Intel Corporation. All rights reserved.
Utility.cpp
c:\Users\Bernardo\Downloads\HW1_6200\ProjectAmina\WaterPaths\src\SystemComponents\Utility\Utility.h(10): catastrophic error: cannot open source file "bits/unique_ptr.h"
#include <bits/unique_ptr.h>
^
compilation aborted for c:\Users\Bernardo\Downloads\HW1_6200\ProjectAmina\WaterPaths\src\SystemComponents\Utility\Utility.cpp (code 4)
出于某种原因,我的标准库似乎没有智能指针。我错过了什么?
std::unique_ptr
的正确头文件是
#include <memory>
header <bits/unique_ptr.h>
是 GCC 标准库的内部实现细节。它是构成 <memory>
.
因此看起来您的代码试图包含 GCC 标准库中的 header,如果您使用 GCC 的标准库进行编译,它可以正常工作,但在使用不同的标准库时则不行。这应该是显而易见的。您不能包含在不同实现中不存在的 header。
用户代码应该永远不要尝试直接包含<bits/unique_ptr.h>
,因为它甚至不存在于 C++ 标准库的其他实现中。要包含的正确 header 是 <memory>
。需要修复代码以停止尝试包含特定实现的内部实现细节。
<bits/unique_ptr.h>
中甚至有评论这样说:
/** @file bits/unique_ptr.h
* This is an internal header file, included by other library headers.
* Do not attempt to use it directly. @headername{memory}
*/