gpt4 book ai didi

c++ - 无法使用某些文件的内存转储进行编译

转载 作者:行者123 更新时间:2023-11-28 08:27:08 25 4
gpt4 key购买 nike

我使用我包含的这个 Debug.h 文件作为我要调试内存泄漏的文件的最后一个#include。然后使用 _CrtDumpMemoryLeaks();将它转储到我的输出中。这对大多数文件都适用,但是当我将它包含在某些文件中时,我会收到以下错误。看起来它与 boost::unorderer_map<> .. 但我可以将我的 Debug.h 包含到 .h 文件中,我在其中定义和使用 unordered_map<> 而没有任何错误.. 当我得到错误时将它包含到我什至不使用它的 .h 文件中..

#ifndef DEBUG_H
#define DEBUG_H

#ifdef _DEBUG
#define DEBUG_NEW new(_NORMAL_BLOCK, __FILE__, __LINE__)
#define new DEBUG_NEW
#endif

#endif

1>d:\uni\ict312\labproject\labproject\inc\boost\unordered\detail\fwd.hpp(351):错误 C2059:语法错误:'('1> d:\uni\ict312\labproject\labproject\inc\boost\unordered\detail\fwd.hpp(350) : 在编译类模板成员函数时 'void boost::unordered_detail::hash_buffered_functions::construct(bool,const H &,常量 P &)'1> 与1> [1> H=boost::哈希,1> P=std::equal_to1> ]1> d:\uni\ict312\labproject\labproject\inc\boost\unordered\detail\fwd.hpp(432) : 参见正在编译的类模板实例 'boost::unordered_detail::hash_buffered_functions' 的引用1> 与1> [1> H=boost::哈希,1> P=std::equal_to1> ]1> d:\uni\ict312\labproject\labproject\inc\boost\unordered\detail\fwd.hpp(572) : 参见正在编译的类模板实例 'boost::unordered_detail::hash_table' 的引用1> 与1> [1> T=boost::unordered_detail::map,std::equal_to,std::allocator>>1> ]1> d:\uni\ict312\labproject\labproject\inc\boost\unordered\unordered_map.hpp(98) : 参见正在编译的类模板实例 'boost::unordered_detail::hash_unique_table' 的引用1> 与1> [1> T=boost::unordered_detail::map,std::equal_to,std::allocator>>1> ]1> d:\uni\ict312\labproject\labproject\inc\collisiondetector.h(15) : 参见正在编译的类模板实例 'boost::unordered_map' 的引用1> 与1> [1> K=无符号整型,1> T=物理对象1> ]

最佳答案

您的意思是,您在所有其他#include 行之后包含 Debug.h,并且仍然在 boost header 中出现编译错误?这可能发生在编译器试图实例化模板类时,只有在此时模板代码才真正被编译。防止这种情况的唯一方法是在导致此错误的代码片段中返回到原始的 new 运算符。没有机会用重新定义的新运算符编译 boost 东西。

另一种方法是将未编译的代码行移动到单独的 .cpp 文件中,而无需重新定义。

关于c++ - 无法使用某些文件的内存转储进行编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3598815/

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