函数名与宏定义的重名的问题

super_admi 2011-03-17 07:04:33
现在库1有一个函数,名称:function_name

而库2有一个宏定义:
#if _UNICODE
#define function_name function_nameW
#else
#define function_name function_nameA

库1的function_name和库2的function_nameW/A, 完全是两码事。

现在我库1和库2都想用,调用库1的function_name时候该怎么办?

前提,库1的函数名和库2的宏定义都不能改,因为两者各自的库,都有其它模块对他们的调用。
...全文
1452 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
baoshengdeer 2012-07-27
  • 打赏
  • 举报
回复
正确答案应该是什么呢?
无名剑 2011-08-25
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 qq120848369 的回复:]
引用 1 楼 super_admi 的回复:

能否这样:

#define f_name function_name
#undefine function_name

调用库1的function_name

#define function_name f_name


想了半天也想到这里了.


C/C++ code
只要在你要调用库1函数的地方:
#undef……
[/Quote]

事实证明无效,我悲剧了函数名叫PlaySound 和mmsystem.h里面的宏重名了

#undef之后依旧无法调用函数....
qq120848369 2011-03-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 super_admi 的回复:]

能否这样:

#define f_name function_name
#undefine function_name

调用库1的function_name

#define function_name f_name
[/Quote]

想了半天也想到这里了.

只要在你要调用库1函数的地方:
#undef function_name
function_name ();

#if _UNICODE
#define function_name function_nameW
#else
#define function_name function_nameA
黎大 2011-03-17
  • 打赏
  • 举报
回复
看不懂,没有接触过这么深的东西
dooX8086 2011-03-17
  • 打赏
  • 举报
回复
宏只在当前文件起作用... 如果两个文件没有交叉 #include 则没有关系...

// 如果是带参宏 与 函数名冲突则可用 (函数名)(..) 来调用函数
wyget 2011-03-17
  • 打赏
  • 举报
回复
在函数名前加个命名空间可以么
bdmh 2011-03-17
  • 打赏
  • 举报
回复
参考c++的定义

#ifdef UNICODE
#define CreateFile CreateFileW
#else
#define CreateFile CreateFileA
super_admi 2011-03-17
  • 打赏
  • 举报
回复
或者直接:
#undefine function_name

这样对其它地方的function_name宏,没有影响吧?我今天迷糊了……
super_admi 2011-03-17
  • 打赏
  • 举报
回复
能否这样:

#define f_name function_name
#undefine function_name

调用库1的function_name

#define function_name f_name

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧