C++ 中头文件包含顺序问题

在一个项目中出现了一下的编译错误,始终找不到问题出在哪.

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 个参数,却提供了 31>  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 个参数,却提供了 31>  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 个参数,却提供了 31>  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 个参数,却提供了 31>  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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wb175208

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值