我正在尝试将 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)
可以很好地编译它。包括在内。
编辑:
哦,我重载了new
与 DEBUG_NEW
做一些内存调试。 DEBUG_NEW
不支持放置新的。
最佳答案
这是我的建议。 “内存”本身在某处也被定义为宏,并且正在扩展导致问题。因此搜索 #define.memory
(使用正则表达式)以查看 memory 是否被定义为宏。
至于下一条语句,这种形式:
new(allocator) ObjectType(...)
当您想使用自己的内存分配器为您分配内存时使用。
希望这对您有所帮助。
关于c++ - 奇怪的代码破坏了 MSVC 中的构建。这是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4756855/