诸如“# define INTERNAL1(X) __##X##_internal”中__和##都什么意思阿

popil1987 2008-06-11 09:50:19
我在看linux库函数源文件的时候看到如下代码:
#ifdef __STDC__
# define INTERNAL(X) INTERNAL1(X)
# define INTERNAL1(X) __##X##_internal
# define WEAKNAME(X) WEAKNAME1(X)
#else
# define INTERNAL(X) __/**/X/**/_internal
#endif

我就晕了,我猜想这样是不是为了移植需要。请高手讲解一下__和##都什么意思,为什么这么写,有什么设计思想吗?
...全文
61 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenzhp 2008-06-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 k2eats 的回复:]
##表示链接字符串,在宏表达式中连接几个参数,举个例子:


#define join(a,b) ab 这样不会理解为参数a的值与参数b的值的连接,即如join(10,999)不会理解为10999而是把ab理解为字符串,即输出ab
这时可以
#define join(a,b) a##b
则join(10,999)就会输出10999


__开头的宏一般表示系统宏
[/Quote]

是这样的
K行天下 2008-06-11
  • 打赏
  • 举报
回复
##表示链接字符串,在宏表达式中连接几个参数,举个例子:


#define join(a,b) ab 这样不会理解为参数a的值与参数b的值的连接,即如join(10,999)不会理解为10999而是把ab理解为字符串,即输出ab
这时可以
#define join(a,b) a##b
则join(10,999)就会输出10999


__开头的宏一般表示系统宏

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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