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;
}
为什么编译程序前,预处理器有时替换了符号常量,有时又没有替换符号常量? 展开
#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;
}
为什么编译程序前,预处理器有时替换了符号常量,有时又没有替换符号常量? 展开
2个回答
展开全部
#define(即宏定义)是在程序预编译时执行替换功能,作用是加快程序运行速度,减少内存空间开销
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2017-02-14
展开全部
不会替换双引号内的宏,具体你可以加编译参数可以直接获取到替换之后的内容。
追问
最近才开始学习C语言(Windows环境),很多地方都还不太明白,请问什么是宏,编译参数又该怎么弄?
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询