c++ - 奇怪的代码破坏了 MSVC 中的构建。这是什么意思?

标签 c++ visual-studio-2010 compiler-errors rapidxml

我正在尝试将 rapidxml 包含到我当前的项目中。但是,它不会构建。

Visual Studio 会提示这段代码 (rapidxml.hpp:419+451):

419: void *memory = allocate_aligned(sizeof(xml_attribute<Ch>));
420: xml_attribute<Ch> *attribute = new(memory) xml_attribute<Ch>;

编译器会说

rapidxml.hpp(420): error C2061: syntax error : identifier 'memory'

我有点明白这会如何混淆编译器。它实际上也让我很困惑。什么是(memory)的一部分 new(memory) xml_attribute<Ch>在那里做什么?

如果我删除那个(memory)部分,它编译得很好。
此外,gcc 使用 (memory) 可以很好地编译它。包括在内。

编辑:
哦,我重载了newDEBUG_NEW做一些内存调试。 DEBUG_NEW不支持放置新的。

最佳答案

这是我的建议。 “内存”本身在某处也被定义为宏,并且正在扩展导致问题。因此搜索 #define.memory(使用正则表达式)以查看 memory 是否被定义为宏。

至于下一条语句,这种形式:

new(allocator) ObjectType(...)

当您想使用自己的内存分配器为您分配内存时使用。

希望这对您有所帮助。

关于c++ - 奇怪的代码破坏了 MSVC 中的构建。这是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4756855/

相关文章:

c++ - 指针(指向指针)和新/malloc vector ( vector 内部)c++

c++ - 在非静态成员函数中使用时,非静态成员的名称是否依赖?

C++ - '(' 标记之前的预期主表达式和 ‘(’ 标记之前缺少的模板参数

emacs - 字节编译错误

c++ - 如何打包/发送程序(Visual Studio 2013)

c# - 如何在 C# 中编写我自己的包装器?

VS2010中的Python

vb.net - 如何在VB中打开控制台

c# - 在 C# 中移动结构数据

css - Sass 中的三 Angular 函数——预处理器错误