2020-11-16-cpp-mfc-error-C1189-windows和afxv_w32的冲突

error C1189: #error :  WINDOWS.H already included.  MFC apps must not #include <windows.h> ...\vc\atlmfc\include\afxv_w32.h	16

能找到的几种方法

1、让它(Windows.h)晚点出现

在加载afxv_w32.h头文件后加载windows.h,即把windows.h头文件放在所有头文件之后。但如果头文件多且杂,可能就把自己玩die了。同时要注意afxv_w32.h中的某些定义会被windows.h覆盖,详细看参考那篇文章。

2、不要让它们(afxv_w32.h和windows.h)两个碰面

在需要用到Window.h的源文件(.c .cpp)中引用windows.h,而不要在头文件中引用,这样不会把对windows.h的引用“传播”开来。

3、不引入windows.h

虽然没有细看代码,不过这上面提示给的很清楚,在MFC程序中MUST NOT(不是SHOULD NOT) 引入windows.h,这两还是不要一起用的好。

既然MFC在这里提示不要用windows.h,那么肯定在某处可以找到程序需要引入的头文件来替代windows.h,所以感觉还是这方法靠谱。

上面是自己引入的windows.h的情况,我遇到的是更蛋疼的情况:愉快的引用了第三方库(MQTT),第三方库中愉快的引入了Windows.h。用第二种方法,让她们两个见不着面了,逃过一劫。

参考

fatal error C1189

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值