VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 380|回复: 2

[求助] 宏定义与函数名冲突的问题

[复制链接]
36_avatar_middle
在线会员 发表于 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
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
在线会员 发表于 2019-4-7 12:31:42 | 显示全部楼层
我估计winuser.h种是个宏,因为宏不会做语法分析直接替换(不会检查是全局函数,还是某个类的函数)所以才会导致你的错误
解决方法有几个:
1. 在使用你的UI类的空间种不要包含MFC的东西(这完全可以用一个wrapper类包装你的UI,使得UI所在的头文件不必要和MFC的在捅一个编译单元
2. 如果你确信不用MFC的CreateDialog,在确认它是宏的条件吓,你可以用#undef取消宏定义
3. 你的UI类放在一个namespace里
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

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

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

GMT+8, 2019-8-19 12:54

Powered by Discuz! X3.4

© 2009-2019 cctry.com

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