C语言中#define定义的符号常量(明显常量)编译程序前真的被替换了吗?

#include<stdio.h>#defineA123#defineB"ABC"intmain(void){printf("%d\n",A);//输出123printf... #include <stdio.h>
#define A 123
#define B "ABC"
int main(void)
{
printf("%d\n",A); // 输出 123

printf("%s\n","A"); // 输出 A,为什么不是123,预处理在编译程序前不是应该把语句替换成 printf("%s\n","123"); 吗
printf("A\n"); // 输出 A,为什么不是123,预处理在编译程序前不是应该把语句替换成 printf("123\n"); 吗

printf("%s\n",B); // 输出 ABC

printf("B\n"); // 输出 B,为什么编译不报错,预处理在编译程序前不是应该把语句替换成 printf(""ABC""\n"); 吗
printf("%s\n","B"); // 输出 B,为什么编译不报错,预处理在编译程序前不是应该把语句替换成 printf("%s\n",""ABC""); 吗

printf("%s\n",""ABC""");

return 0;
}

为什么编译程序前,预处理器有时替换了符号常量,有时又没有替换符号常量?
展开
 我来答
樊德文字鸟
2019-08-07 · TA获得超过3.7万个赞
知道大有可为答主
回答量:1.2万
采纳率:28%
帮助的人:1104万
展开全部
#define(即宏定义)是在程序预编译时执行替换功能,作用是加快程序运行速度,减少内存空间开销
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2017-02-14
展开全部
不会替换双引号内的宏,具体你可以加编译参数可以直接获取到替换之后的内容。
追问
最近才开始学习C语言(Windows环境),很多地方都还不太明白,请问什么是宏,编译参数又该怎么弄?
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式