首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >GCC打印优化

GCC打印优化
EN

Stack Overflow用户
提问于 2013-10-21 08:13:46
回答 1查看 1.4K关注 0票数 2

我注意到GCC在优化printf方面非常聪明。例如,从结果代码中完全删除printf("")printf("\n")putchar('\n')所取代。

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

代码语言:javascript
运行
AI代码解释
复制
extern "C" int printf(const char *__restrict __format, ...);

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

对于gcc -O2,对printf的调用被putchar('\n')所取代(甚至不需要包含任何头文件)。

生成的代码:

代码语言:javascript
运行
AI代码解释
复制
f():
        mov     edi, 10
        jmp     putchar

允许执行这些优化的机制是什么?据我所知,标准C++没有提供任何允许这种优化的特性。

它可以扩展到用户函数,还是在编译器中“硬编码”呢?

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-21 08:43:54

与GCC一起编译时,某些函数是内置函数.这意味着它们的实现被内置到编译器中,而库版本则被忽略。printf就是这样的一个函数。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19499618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档