解决使用ptlib库导致的编译错误qlist.h(98): warning C4003: 类函数宏的调用“realloc”参数不足的问题。
D:\Qt\Qt5.12.1\5.12.1\msvc2017\include\QtCore/qlist.h(98): warning C4003: 类函数宏的调用“realloc”参数不足D:\Qt\Qt5.12.1\5.12.1\msvc2017\include\QtCore/qlist.h(98): error C2059: 语法错误:“,”D:\Qt\Qt5.12.1\5.12.1\msvc2017\include\QtCore/qlist.h(98): error C3254: “QListData”: 类包含显式重写“Reallocate”,但并不从包含函数声明的接口派生D:\Qt\Qt5.12.1\5.12.1\msvc2017\include\QtCore/qlist.h(98): error C2838: “Reallocate”: 成员声明中的限定名称非法D:\Qt\Qt5.12.1\5.12.1\msvc2017\include\QtCore/qlist.h(577): warning C4003: 类函数宏的调用“realloc”参数不足D:\Qt\Qt5.12.1\5.12.1\msvc2017\include\QtCore/qvarlengtharray.h(244): error C2059: 语法错误:“字符串”D:\Qt\Qt5.12.1\5.12.1\msvc2017\include\QtCore/qvarlengtharray.h(260): note: 参见对正在编译的 类 模板 实例化 "QVarLengthArray<T,Prealloc>" 的引用D:\Qt\Qt5.12.1\5.12.1\msvc2017\include\QtCore/qvarlengtharray.h(244): error C3254: “QVarLengthArray<T,Prealloc>”: 类包含显式重写“Reallocate”,但并不从包含函数声明的接口派生D:\Qt\Qt5.12.1\5.12.1\msvc2017\include\QtCore/qvarlengtharray.h(244): error C2838: “Reallocate”: 成员声明中的限定名称非法D:\Qt\Qt5.12.1\5.12.1\msvc2017\include\QtCore/qvarlengtharray.h(362): warning C4346: “QVarLengthArray<T,Prealloc>::PMemoryHeap::Reallocate”: 依赖名称不是类型D:\Qt\Qt5.12.1\5.12.1\msvc2017\include\QtCore/qvarlengtharray.h(362): note: 用“typename”为前缀来表示类型D:\Qt\Qt5.12.1\5.12.1\msvc2017\include\QtCore/qvarlengtharray.h(362): error C2988: 不可识别的模板声明/定义D:\Qt\Qt5.12.1\5.12.1\msvc2017\include\QtCore/qvarlengtharray.h(362): error C2059: 语法错误:“字符串”D:\Qt\Qt5.12.1\5.12.1\msvc2017\include\QtCore/qvarlengtharray.h(363): error C2063: “Reallocate”: 不是一个函数D:\Qt\Qt5.12.1\5.12.1\msvc2017\include\QtCore/qvarlengtharray.h(363): error C2226: 语法错误: 意外的“QVarLengthArray<T,Prealloc>::PMemoryHeap::Reallocate”类型
object.h
头文件包含以下宏定义;/** Override of system call for memory check system.This macro is used to allocate memory via the memory check system selectedwith the <code>PMEMORY_CHECK</code> compile time option. It will include the source fileand line into the memory allocation to allow the PMemoryHeap class to keeptrack of the memory block.*/#define realloc(p,s) PMemoryHeap::Reallocate(p, s, __FILE__, __LINE__)
undef
宏定义解开 realloc
即可解决。#undef realloc(p,s)
C3254
为"explicit override"类包含显式重写"override",但并不从包含函数声明的接口派生;C2838
为类、结构或联合使用完全限定名重新声明另一个类、结构或联合的成员。