免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2007 | 回复: 7
打印 上一主题 下一主题

[C] define中的#问题. [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-06-15 08:40 |只看该作者 |倒序浏览
今天再APUE看见


  1. #define   doit(name)   pr_limits(#name,name)

  2. static void  pr_limits(char * ,int)/*函数定义*/

复制代码


上边pr_limits中的name前面加了个#是什么意思??

是不是加个#就变成了char类型的??

论坛徽章:
0
2 [报告]
发表于 2008-06-15 12:26 |只看该作者
引用操作符(#)是一元的,后跟一个形参作为运算对象,它的作用是将该运算对象替换为带引号的字符串。

论坛徽章:
0
3 [报告]
发表于 2008-06-15 17:25 |只看该作者
把参数放到双引号中,即常量字符串。

论坛徽章:
1
黑曼巴
日期:2020-02-27 22:54:26
4 [报告]
发表于 2008-06-15 19:32 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
5 [报告]
发表于 2008-06-15 22:09 |只看该作者
原帖由 c/unix 于 2008-6-15 19:32 发表
宏定义中的#表示将其变为字符串。如:
#include  
#include
   
#define STRCPY(a, b)     strcpy(a ##_p, #b)
int main()
{
char arrr_p[]="abcdefg";
char *b = "123456";
STRCPY(arrr, b);  ...


a ,##,_p
代表什么意思?
怎么我运行之后的arrr_p的结果是b\000cdefg呢?

论坛徽章:
0
6 [报告]
发表于 2008-06-15 22:20 |只看该作者
##连接符。如a##b相当于ab

论坛徽章:
0
7 [报告]
发表于 2008-06-15 22:28 |只看该作者
a ,##,_p
代表什么意思?// 是连接2个字符串.
怎么我运行之后的arrr_p的结果是b\000cdefg呢?/*这个问题呢?运行之后结果很令人不解.*/

论坛徽章:
0
8 [报告]
发表于 2008-06-18 09:22 |只看该作者
我一样的操作结果是正确的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP