gpt4 book ai didi

c++ - GCC printf 优化

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:25:49 25 4
gpt4 key购买 nike

我注意到 GCC 在优化 printf 方面非常聪明。例如,printf("") 已从生成的代码中完全删除。 printf("\n") 替换为 putchar('\n')

我在编译这样一个非常小的模块时注意到:

extern "C" int printf(const char *__restrict __format, ...);

void f()
{
printf("\n");
}

使用 gcc -O2 调用 printf 被替换为 putchar('\n') (甚至不需要包含任何头文件)。

生成的代码:

f():
mov edi, 10
jmp putchar

执行这些优化的机制是什么?据我所知,标准 C++ 不提供任何允许此类优化的功能。

它可以为用户功能扩展还是在编译器中“硬编码”?

这也意味着如果我想用我自己的实现重新定义 printf,编译器可能会把它搞砸。是真的吗?

最佳答案

使用 GCC 编译时,某些函数是内置函数。这意味着它们的实现内置在编译器中,库版本被忽略。 printf 就是这样一个函数。

看看http://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html

关于c++ - GCC printf 优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19499618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com