鱼C论坛

 找回密码
 立即注册
查看: 3999|回复: 7

宏定义出错

[复制链接]
回帖奖励 4 鱼币 回复本帖可获得 2 鱼币奖励! 每人限 1 次(中奖概率 30%)
发表于 2013-6-8 14:24:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>
#include <string.h>
#define Str(s1, s2, s3, sum)  strcat(strcat((strcat(sum,s1),s2),s3);
int main()
{   
    char str1[]={"dfs"},    str2[]={"syk"},     str3[]={"4sdfg"},    str[35]={""};
    Str(str1,str2,str3,str);         //strcat(strcat(ap,bp),cp);               
   printf("str = %s",srt);

}
鱼哥讲的 c语言程序设计教程 51课最后的一个程序 编译老出错 不知道什么原因,将Str(str1,str2,str3,str);换成strcat(strcat(ap,bp),cp); 可以编译的过,但用宏定义却不行,各位看看那写错了。



小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-8 16:14:50 | 显示全部楼层
内存太小 数组越界了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-6-8 17:43:04 | 显示全部楼层
#define Str(s1, s2, s3, sum)  strcat(strcat((strcat(sum,s1),s2),s3);
1、括号多了个,仔细看看:strcat(strcat(strcat(sum,s1),s2),s3);
2、要么宏定义里面加分号,要么调用宏语句后加分号
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-6-8 19:29:09 | 显示全部楼层
是不是宏定义后面不用加分号啊?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-9 07:54:10 | 显示全部楼层
确实是括号的原因,多打了一个,还有输出的str也打错了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-6-17 10:06:55 | 显示全部楼层
帮忙顶{:7_155:}
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-6-17 17:26:10 | 显示全部楼层
我顶、、、、、、、、、、
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-6-17 21:00:30 | 显示全部楼层
是不是宏定义时,多加了分号啊!!!!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-25 21:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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