Redian新闻
>
推荐一个叫《猫咪女孩》的电影
avatar
推荐一个叫《猫咪女孩》的电影# pets - 心有所宠
w*t
1
为什么 1 和 2 的结果不同?
1. printf("%s\n", NULL);
结果: Segmentation fault (core dumped)
2. printf("add string %s\n", NULL);
结果: add string (null)
avatar
N*g
2
haha,正在看,好像不错,貌似是一群猫中间的一个小女猫变成人类的故事
avatar
h*c
3
gcc -fno-builtin-printf

【在 w*******t 的大作中提到】
: 为什么 1 和 2 的结果不同?
: 1. printf("%s\n", NULL);
: 结果: Segmentation fault (core dumped)
: 2. printf("add string %s\n", NULL);
: 结果: add string (null)

avatar
w*t
4
多谢!
查了一下 -fno-builtin-printf, 说是不把printf转换成puts。是这样吗?
可是要转都转,要么都不转。还是不明白1和2的结果为什么不同啊?

【在 h*c 的大作中提到】
: gcc -fno-builtin-printf
avatar
h*c
5
puts calls strlen

【在 w*******t 的大作中提到】
: 多谢!
: 查了一下 -fno-builtin-printf, 说是不把printf转换成puts。是这样吗?
: 可是要转都转,要么都不转。还是不明白1和2的结果为什么不同啊?

avatar
p*i
6
By default a call to printf("%s\n", p) is converted at compile time to puts(
p) (it's faster).
That's why printf("%s", NULL) will succeed, since it won't be converted (
missing '\n').

【在 w*******t 的大作中提到】
: 多谢!
: 查了一下 -fno-builtin-printf, 说是不把printf转换成puts。是这样吗?
: 可是要转都转,要么都不转。还是不明白1和2的结果为什么不同啊?

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。