VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 577|回复: 2

宏定义与函数名冲突的问题

[复制链接]
36_avatar_middle
最佳答案
0 
在线会员 发表于 2019-2-8 08:19:47 | 显示全部楼层 |阅读模式
3驿站币
theDialog = theUI->CreateDialog(theDlxFileName);

createdialog  与 WinUser.h 定义的宏冲突 无法编译

可以用#undef CreateDialog  解决


还有就是加括号
怎么加啊?


theDialog =(theUI->CreateDialog)(theDlxFileName);

这样还是会报错的

Error        C2039        'CreateDialogW': is not a member of 'NXOpen::UI'





上一篇:指针问题
下一篇:急!急!急!关于数据库Access问题,想要插入数据是超链接而不是文本
77_avatar_middle
最佳答案
31 
online_vip 发表于 2019-2-9 15:01:57 | 显示全部楼层
试试这几种办法:
1. 在使用你的UI类的空间种不要包含MFC的东西(这完全可以用一个wrapper类包装你的UI,使得UI所在的头文件不必要和MFC的在捅一个编译单元
2. 如果你确信不用MFC的CreateDialog,在确认它是宏的条件吓,你可以用#undef取消宏定义
3. 你的UI类放在一个namespace里
62_avatar_middle
最佳答案
0 
在线会员 发表于 2019-4-7 12:31:42 | 显示全部楼层
我估计winuser.h种是个宏,因为宏不会做语法分析直接替换(不会检查是全局函数,还是某个类的函数)所以才会导致你的错误
解决方法有几个:
1. 在使用你的UI类的空间种不要包含MFC的东西(这完全可以用一个wrapper类包装你的UI,使得UI所在的头文件不必要和MFC的在捅一个编译单元
2. 如果你确信不用MFC的CreateDialog,在确认它是宏的条件吓,你可以用#undef取消宏定义
3. 你的UI类放在一个namespace里
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2020-9-27 19:23

Powered by CcTry.CoM

© 2009-2020 cctry.com

快速回复 返回顶部 返回列表