提问人:sakshi monst 提问时间:11/27/2022 最后编辑:Andy A.sakshi monst 更新时间:12/2/2022 访问量:60
下面的宏在 c 编程语言中是如何工作的?[关闭]
How below macro is working in c programming language? [closed]
问:
法典:
#include <stdio.h>
#define puts "%s C preprocessor"
int main()
{
printf(puts, puts);
return 0;
}
输出:
%s C preprocessor C preprocessor
谁能解释一下这个输出背后的逻辑?
我试图解决它,但我没有通过我的朋友得到正确的解释。如果有人能解释我,那将非常有帮助。
答:
0赞
Andy A.
11/29/2022
#1
宏 let to(链接器后面的代码):
int main
{
printf("%s C preprocessor", "%s C preprocessor");
return 0;
}
printf
作品如下:
输出是
%s C preprocessor C preprocessor
评论
0赞
sakshi monst
11/29/2022
这种输出背后的原因是什么?
0赞
sakshi monst
11/29/2022
A,为什么会这样?为什么 IS%s 被打印出来?
0赞
Andy A.
11/29/2022
好吧,起初链接器会因为宏而更改代码。然后 printf 有 2 个相同的字符串。第一个字符串作为格式字符串,第二个字符串作为简单字符串。然后 printf 用第二个参数替换 formatstring 中的“%s”。那里的“%s”不会被替换,因为它不在格式字符串中。
0赞
Andy A.
11/29/2022
添加了 printf 中替换如何工作的图像
2赞
Andy A.
11/29/2022
现在,请用小写字母重写您的问题。写所有大写被归类为粗鲁!
评论