鱼C论坛

 找回密码
 立即注册
查看: 4785|回复: 3

[已解决]关于“宏定义中的两道衣裳命令的情形“

[复制链接]
发表于 2016-11-7 15:40:24 | 显示全部楼层 |阅读模式

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

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

x
  1. #include<stdio.h>
  2. #define exchange(a,b)
  3. {
  4. int t;\
  5. t=a;\
  6. a=b;\
  7. b=t;\
  8. }

  9. int main()
  10. {
  11.         int x=10 ;
  12.         int y=20 ;
  13.         printf("x=%d ; y=%d \n", x , y );

  14.         exchange(x,y);
  15.         printf("x=%d ; y=%d \n", x , y );
  16. }
复制代码


今天看到一个宏定义的练习,代码如上,运行显示错误,提示如图,请知道的鱼油帮忙解答下!!!
error C2449: found '{' at file scope (missing function header?)
error C2059: syntax error : '}'
最佳答案
2023-12-6 17:32:02
鱼C篮球 发表于 2023-12-06 17:31
#include
#define exchange(a,b)
{
int t;\
t=a; ...

首先,你的代码中定义了一个宏exchange(a,b),但是宏定义应该是不需要加大括号的。另外,还需要包含stdio.h头文件来使用printf函数。

修改后的代码如下:
  1. #include <stdio.h>
  2. #define exchange(a,b) \
  3. { \
  4.     int t = a; \
  5.     a = b; \
  6.     b = t; \
  7. }
  8. int main()
  9. {
  10.     int x = 10;
  11.     int y = 20;
  12.     printf("x=%d ; y=%d \n", x, y);
  13.     exchange(x, y);
  14.     printf("x=%d ; y=%d \n", x, y);
  15. }
复制代码

这段代码中,我们定义了一个宏exchange(a,b),用于交换两个变量的值。在main函数中,我们首先初始化了变量x和y的值分别为10和20,然后使用printf打印出它们的当前值。

接下来,我们调用exchange宏来交换变量x和y的值。具体实现是通过一个临时变量t来暂存变量a的值,然后将a赋值为b,再将b赋值为t。这样,变量x和y的值就完成了交换。

最后,我们再次使用printf来验证交换是否成功。现在你可以运行代码并观察输出结果,看看变量x和y的值是否被成功交换了。

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-11-7 15:50:12 | 显示全部楼层
  1. #include<stdio.h>
  2. #define exchange(a,b) \
  3. {\
  4. int t;\
  5. t=a;\
  6. a=b;\
  7. b=t;\
  8. }

  9. int main()
  10. {
  11.         int x=10 ;
  12.         int y=20 ;
  13.         printf("x=%d ; y=%d \n", x , y );

  14.         exchange(x,y);
  15.         printf("x=%d ; y=%d \n", x , y );
  16. }
复制代码


改成这样就OK了,但原因还是没明白,请各位鱼油出来指点指点!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-6 17:31:28 | 显示全部楼层
#include<stdio.h>
#define exchange(a,b)
{
int t;\
t=a;\
a=b;\
b=t;\
}

int main()
{
        int x=10 ;
        int y=20 ;
        printf("x=%d ; y=%d \n", x , y );

        exchange(x,y);
        printf("x=%d ; y=%d \n", x , y );
}

@FishC_GPT
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-6 17:32:02 | 显示全部楼层    本楼为最佳答案   
鱼C篮球 发表于 2023-12-06 17:31
#include
#define exchange(a,b)
{
int t;\
t=a; ...

首先,你的代码中定义了一个宏exchange(a,b),但是宏定义应该是不需要加大括号的。另外,还需要包含stdio.h头文件来使用printf函数。

修改后的代码如下:
  1. #include <stdio.h>
  2. #define exchange(a,b) \
  3. { \
  4.     int t = a; \
  5.     a = b; \
  6.     b = t; \
  7. }
  8. int main()
  9. {
  10.     int x = 10;
  11.     int y = 20;
  12.     printf("x=%d ; y=%d \n", x, y);
  13.     exchange(x, y);
  14.     printf("x=%d ; y=%d \n", x, y);
  15. }
复制代码

这段代码中,我们定义了一个宏exchange(a,b),用于交换两个变量的值。在main函数中,我们首先初始化了变量x和y的值分别为10和20,然后使用printf打印出它们的当前值。

接下来,我们调用exchange宏来交换变量x和y的值。具体实现是通过一个临时变量t来暂存变量a的值,然后将a赋值为b,再将b赋值为t。这样,变量x和y的值就完成了交换。

最后,我们再次使用printf来验证交换是否成功。现在你可以运行代码并观察输出结果,看看变量x和y的值是否被成功交换了。

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-3 01:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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