在一个项目中出现了一下的编译错误,始终找不到问题出在哪.
1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\pplinterface.h(238): error C2976: “std::atomic”: 模板 参数太少
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\atomic(655): note: 参见“std::atomic”的声明
1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\pplinterface.h(238): error C2061: 语法错误: 标识符“_Exchange”
1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\pplinterface.h(243): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\pplinterface.h(246): error C2976: “std::atomic”: 模板 参数太少
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\atomic(655): note: 参见“std::atomic”的声明
1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\pplinterface.h(246): error C2061: 语法错误: 标识符“_Value”
1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\pplinterface.h(249): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\pplinterface.h(252): error C2976: “std::atomic”: 模板 参数太少
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\atomic(655): note: 参见“std::atomic”的声明
1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\pplinterface.h(255): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\pplinterface.h(258): error C2976: “std::atomic”: 模板 参数太少
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\atomic(655): note: 参见“std::atomic”的声明
1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\pplinterface.h(261): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\pplinterface.h(264): error C2976: “std::atomic”: 模板 参数太少
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\atomic(655): note: 参见“std::atomic”的声明
1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\pplinterface.h(264): error C2061: 语法错误: 标识符“_Value”
1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\pplinterface.h(267): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\pplcancellation_token.h(148): error C2780: “int Concurrency::details::atomic_compare_exchange(std::atomic &)”: 应输入 1 个参数,却提供了 3 个
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\pplinterface.h(238): note: 参见“Concurrency::details::atomic_compare_exchange”的声明
1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\pplcancellation_token.h(154): error C2780: “int Concurrency::details::atomic_compare_exchange(std::atomic &)”: 应输入 1 个参数,却提供了 3 个
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\pplinterface.h(238): note: 参见“Concurrency::details::atomic_compare_exchange”的声明
1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\pplcancellation_token.h(369): error C2780: “int Concurrency::details::atomic_compare_exchange(std::atomic &)”: 应输入 1 个参数,却提供了 3 个
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\pplinterface.h(238): note: 参见“Concurrency::details::atomic_compare_exchange”的声明
1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\pplcancellation_token.h(456): error C2780: “int Concurrency::details::atomic_compare_exchange(std::atomic &)”: 应输入 1 个参数,却提供了 3 个
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\pplinterface.h(238): note: 参见“Concurrency::details::atomic_compare_exchange”的声明
1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\pplcancellation_token.h(479): error C2665: “std::atomic_exchange”: 32 个重载中没有一个可以转换所有参数类型
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(552): note: 可能是“void *std::atomic_exchange(std::_Atomic_address *,void *) noexcept”[通过使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(546): note: 或 “void *std::atomic_exchange(volatile std::_Atomic_address *,void *) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(552): note: 或 “unsigned __int64 std::atomic_exchange(std::_Atomic_ullong *,unsigned __int64) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(546): note: 或 “unsigned __int64 std::atomic_exchange(volatile std::_Atomic_ullong *,unsigned __int64) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(552): note: 或 “__int64 std::atomic_exchange(std::_Atomic_llong *,__int64) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(546): note: 或 “__int64 std::atomic_exchange(volatile std::_Atomic_llong *,__int64) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(552): note: 或 “unsigned long std::atomic_exchange(std::_Atomic_ulong *,unsigned long) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(546): note: 或 “unsigned long std::atomic_exchange(volatile std::_Atomic_ulong *,unsigned long) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(552): note: 或 “long std::atomic_exchange(std::_Atomic_long *,long) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(546): note: 或 “long std::atomic_exchange(volatile std::_Atomic_long *,long) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(552): note: 或 “unsigned int std::atomic_exchange(std::_Atomic_uint *,unsigned int) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(546): note: 或 “unsigned int std::atomic_exchange(volatile std::_Atomic_uint *,unsigned int) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(552): note: 或 “int std::atomic_exchange(std::_Atomic_int *,int) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(546): note: 或 “int std::atomic_exchange(volatile std::_Atomic_int *,int) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(552): note: 或 “unsigned short std::atomic_exchange(std::_Atomic_ushort *,unsigned short) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(546): note: 或 “unsigned short std::atomic_exchange(volatile std::_Atomic_ushort *,unsigned short) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(552): note: 或 “short std::atomic_exchange(std::_Atomic_short *,short) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(546): note: 或 “short std::atomic_exchange(volatile std::_Atomic_short *,short) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(552): note: 或 “wchar_t std::atomic_exchange(std::_Atomic_wchar_t *,wchar_t) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(546): note: 或 “wchar_t std::atomic_exchange(volatile std::_Atomic_wchar_t *,wchar_t) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(552): note: 或 “char32_t std::atomic_exchange(std::_Atomic_char32_t *,char32_t) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(546): note: 或 “char32_t std::atomic_exchange(volatile std::_Atomic_char32_t *,char32_t) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(552): note: 或 “char16_t std::atomic_exchange(std::_Atomic_char16_t *,char16_t) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(546): note: 或 “char16_t std::atomic_exchange(volatile std::_Atomic_char16_t *,char16_t) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(552): note: 或 “unsigned char std::atomic_exchange(std::_Atomic_uchar *,unsigned char) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(546): note: 或 “unsigned char std::atomic_exchange(volatile std::_Atomic_uchar *,unsigned char) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(552): note: 或 “signed char std::atomic_exchange(std::_Atomic_schar *,signed char) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(546): note: 或 “signed char std::atomic_exchange(volatile std::_Atomic_schar *,signed char) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(552): note: 或 “char std::atomic_exchange(std::_Atomic_char *,char) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(546): note: 或 “char std::atomic_exchange(volatile std::_Atomic_char *,char) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(552): note: 或 “bool std::atomic_exchange(std::_Atomic_bool *,bool) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(546): note: 或 “bool std::atomic_exchange(volatile std::_Atomic_bool *,bool) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\pplcancellation_token.h(479): note: 尝试匹配参数列表“(Concurrency::details::atomic_long, const long)”时
1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\ppltasks.h(759): error C2665: “std::atomic_exchange”: 32 个重载中没有一个可以转换所有参数类型
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(552): note: 可能是“void *std::atomic_exchange(std::_Atomic_address *,void *) noexcept”[通过使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(546): note: 或 “void *std::atomic_exchange(volatile std::_Atomic_address *,void *) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(552): note: 或 “unsigned __int64 std::atomic_exchange(std::_Atomic_ullong *,unsigned __int64) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(546): note: 或 “unsigned __int64 std::atomic_exchange(volatile std::_Atomic_ullong *,unsigned __int64) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(552): note: 或 “__int64 std::atomic_exchange(std::_Atomic_llong *,__int64) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(546): note: 或 “__int64 std::atomic_exchange(volatile std::_Atomic_llong *,__int64) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(552): note: 或 “unsigned long std::atomic_exchange(std::_Atomic_ulong *,unsigned long) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(546): note: 或 “unsigned long std::atomic_exchange(volatile std::_Atomic_ulong *,unsigned long) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(552): note: 或 “long std::atomic_exchange(std::_Atomic_long *,long) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(546): note: 或 “long std::atomic_exchange(volatile std::_Atomic_long *,long) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(552): note: 或 “unsigned int std::atomic_exchange(std::_Atomic_uint *,unsigned int) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(546): note: 或 “unsigned int std::atomic_exchange(volatile std::_Atomic_uint *,unsigned int) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(552): note: 或 “int std::atomic_exchange(std::_Atomic_int *,int) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(546): note: 或 “int std::atomic_exchange(volatile std::_Atomic_int *,int) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(552): note: 或 “unsigned short std::atomic_exchange(std::_Atomic_ushort *,unsigned short) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(546): note: 或 “unsigned short std::atomic_exchange(volatile std::_Atomic_ushort *,unsigned short) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(552): note: 或 “short std::atomic_exchange(std::_Atomic_short *,short) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(546): note: 或 “short std::atomic_exchange(volatile std::_Atomic_short *,short) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(552): note: 或 “wchar_t std::atomic_exchange(std::_Atomic_wchar_t *,wchar_t) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(546): note: 或 “wchar_t std::atomic_exchange(volatile std::_Atomic_wchar_t *,wchar_t) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(552): note: 或 “char32_t std::atomic_exchange(std::_Atomic_char32_t *,char32_t) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(546): note: 或 “char32_t std::atomic_exchange(volatile std::_Atomic_char32_t *,char32_t) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(552): note: 或 “char16_t std::atomic_exchange(std::_Atomic_char16_t *,char16_t) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(546): note: 或 “char16_t std::atomic_exchange(volatile std::_Atomic_char16_t *,char16_t) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(552): note: 或 “unsigned char std::atomic_exchange(std::_Atomic_uchar *,unsigned char) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(546): note: 或 “unsigned char std::atomic_exchange(volatile std::_Atomic_uchar *,unsigned char) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(552): note: 或 “signed char std::atomic_exchange(std::_Atomic_schar *,signed char) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(546): note: 或 “signed char std::atomic_exchange(volatile std::_Atomic_schar *,signed char) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(552): note: 或 “char std::atomic_exchange(std::_Atomic_char *,char) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(546): note: 或 “char std::atomic_exchange(volatile std::_Atomic_char *,char) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(552): note: 或 “bool std::atomic_exchange(std::_Atomic_bool *,bool) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xxatomic(546): note: 或 “bool std::atomic_exchange(volatile std::_Atomic_bool *,bool) noexcept”[使用参数相关的查找找到]
1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\ppltasks.h(759): note: 尝试匹配参数列表“(Concurrency::details::atomic_long, long)”时
1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\ppltasks.h(6060): error C2513: “Concurrency::cancellation_token”: 在“=”前没有声明变量
1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\ppltasks.h(6061): error C2059: 语法错误:“.”
1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\ppltasks.h(6061): error C2143: 语法错误: 缺少“;”(在“{”的前面)
1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\ppltasks.h(6063): error C2059: 语法错误:“)”
1>
后来发现原来是头文件包含的顺序出现了问题:
原来的头文件包含:
#include "SimServer.h"
#include "PlayBus.h"
#include "SubThings.h"
#include "CommonUse/GlobalUse.h"
#include "Adapter/ScenarioXmlAdapter.h"
#include "EntitySupervisor/EntityManager.h"
#include "InterfaceImpl/GuiTimeCtrl/SimProcessCtrlManager.h"
#include "EntitySupervisor/Entity/EntityPlatform.h"
#include <QFile>
#include <QThread>
#include <QApplication>
修改之后的头文件
#include <QFile>
#include <QThread>
#include <QApplication>
#include "SimServer.h"
#include "PlayBus.h"
#include "SubThings.h"
#include "CommonUse/GlobalUse.h"
#include "Adapter/ScenarioXmlAdapter.h"
#include "EntitySupervisor/EntityManager.h"
#include "InterfaceImpl/GuiTimeCtrl/SimProcessCtrlManager.h"
#include "EntitySupervisor/Entity/EntityPlatform.h"
再次编译就通过了!
一定要把系统的头文件发在最上面!!!
aaa