C菜鸟的简单问题 在线等

codelabs 2009-12-21 06:56:04
//头文件 x.h
#define XTL_CUSTOMER_ID "007099"

//第一个源文件 a.c
s8 * xtl_get_customer_ID(void)
{
char customer_ID[6] = {0};
strcpy(customer_ID, XTL_CUSTOMER_ID);
return customer_ID;
}

//第二个源文件 b.c

#define CUSTOM_CLIENT_ID xtl_get_customer_ID()

strcat (g_channel_info.channel[count],CUSTOM_CLIENT_ID);//第二个参数有错误

错在哪里,要怎么改。
在线等
...全文
131 点赞 收藏 9
写回复
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
macrojj 2009-12-21
s8 * xtl_get_customer_ID(void)
{
char customer_ID[6] = {0};
strcpy(customer_ID, XTL_CUSTOMER_ID);
return customer_ID;返回一个栈上的量 错误
}

//第二个源文件 b.c

#define CUSTOM_CLIENT_ID xtl_get_customer_ID()

strcat (g_channel_info.channel[count],CUSTOM_CLIENT_ID);//第二个参数有错误
回复
xidiandaily 2009-12-21
[Quote=引用 7 楼 hbvanguard 的回复:]
宏和 xtl_get_customer_ID()都不要直接用下面这一条语句
strcat (g_channel_info.channel[count],"007099" );
[/Quote]

估计lz在学 define 用法吧
回复
hbvanguard 2009-12-21
宏和 xtl_get_customer_ID()都不要直接用下面这一条语句
strcat (g_channel_info.channel[count],"007099" );
回复
mstlq 2009-12-21
有错误如下……

s8 * xtl_get_customer_ID(void)
{
char customer_ID[6] = {0};//存放"007099"需要7个char的长度,这里失败
strcpy(customer_ID, XTL_CUSTOMER_ID);
return customer_ID; //返回栈上的内容,函数一退出,customer_ID就离开了它的作用域,失败
}


不过以上还不是导致楼主所表述现象的错误……
回复
xidiandaily 2009-12-21
在文件 b.c 中添加一个

extern xtl_get_customer_ID()

试试
回复
codelabs 2009-12-21
Serious error: C2968E: <argument 2 to 'strcat'>: illegal cast of 'void' to pointer

我想找到 "007099" 添加进去
回复
hbvanguard 2009-12-21
CUSTOM_CLIENT_ID ---> xtl_get_customer_ID() 这是个函数
strcat (str1,str2),这里的str2要求是一个char*类型,必须是字符串
如果xtl_get_customer_ID()返回的是个字符串那么可以改为:
1.删除宏 #define CUSTOM_CLIENT_ID xtl_get_customer_ID()
2.strcat (g_channel_info.channel[count],xtl_get_customer_ID());
回复
第一个返回了局部变量,错误,可以用malloc分配内存,然后返回
第二个函数里面你的第一个参数好像不是地址
回复
xidiandaily 2009-12-21
出错提示是什么?
是不是找不到函数 xtl_get_customer_ID() ?
回复
发动态
发帖子
C语言
创建于2007-09-28

6.2w+

社区成员

C语言相关问题讨论
申请成为版主
社区公告
暂无公告