鱼C论坛

 找回密码
 立即注册
查看: 19|回复: 1

小程序求助~

[复制链接]
发表于 5 小时前 | 显示全部楼层 |阅读模式

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

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

x
#include <stdio.h>

#define PR(format,value) printf("value=%format\t",value)


void main()
{
        int x=5;
        PR(d,x);
}

为什么编译可以,但是运行后却报错,哪里错了呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 5 小时前 | 显示全部楼层
鱼油你好,代码的问题在于宏定义中的格式字符串没有正确展开。


  1. #include <stdio.h>

  2. // 原宏定义:这里%format会被当作普通字符串,而不是格式说明符
  3. // 展开后变成:printf("value=%format\t",x);  %format不是有效格式符

  4. // 正确写法:使用#将参数字符串化,再拼接成完整格式字符串
  5. #define PR(format, value) printf("value=%" #format "\t", (value))

  6. int main()  // main函数应返回int类型
  7. {
  8.     int x = 5;
  9.     PR(d, x);  // 展开为:printf("value=%d\t", (5));
  10.     return 0;
  11. }
复制代码


主要问题:
1. 在字符串中的 %format 不会被替换,预处理器不会在字符串内替换宏参数
2. void main() 不符合C标准,应使用 int main()

修改后程序会正确输出:value=5(后面有制表符)

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-23 06:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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