gpt4 book ai didi

c++ - 内存标准头和包含文件之间的区别

转载 作者:行者123 更新时间:2023-11-30 01:53:36 28 4
gpt4 key购买 nike

我是 C++ 的新手,我正在调试一个问题,其中有一个 allocate.h main.cpp 包含的文件文件。现在 allocate.h文件的第一行是这样的:#include <memory.h> .当我尝试编译 main.cpp我收到一条错误消息说

Microsoft Visual Studio 11.0\ VC\ include\ typeinfo (153) : error
C2504 exception base class undefined

但是当我将第一行更改为:#include <memory>然后 main.cpp 编译正常。那是当我开始在网上搜索这两种包含文件样式之间的区别时,我还没有找到任何详细的解释。如果有人能解释包含 .h 文件和内存标准头文件之间的区别,那将非常有帮助。
是不是因为#include<memory>更多线程安全?或者是因为它只是 C++ 中包含文件的方式。

我还使用 cmake 将我的项目包含在 llvm 生成的解决方案中。生成我的 .vcxproj 时文件包含 _HAS_EXCEPTIONS=0;<PreprocessorDefinitions>标签在里面。如果我使用较早的声明 #include<memory.h>并删除 _HAS_EXCEPTIONS=0;来自 <PreprocessorDefinitions>标记然后项目编译正常。这一切是如何联系起来的?有人可以帮我把这些点联系起来吗?

最佳答案

<memory.h><memory>不是不同的样式,它们是两个完全不同的标题。

<memory.h>看起来它是 MS 的 C 库使用的内部 header ,您不应该包含它,使用标准 C++ header <memory> .

关于c++ - 内存标准头和包含文件之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23097743/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com