GCC disables lots of builtins以严格模式运行时-std=c...
。为什么GCC在严格模式下不使用内建函数?
外严格ISO C模式(-ansi,-std = C90,-std = C99或-std = C11),所述 功能_exit,ALLOCA,BCMP,bzero ... stpcpy,...可以作为内置函数处理为 。所有这些功能都有相应版本 ,前缀为_ 内置,即使在严格的C90模式下也可以使用。
有什么理由呢? builtin不符合?或者是这是因为标准说,当你打电话给memcpy
它实际上应该叫它,我不能被优化?
我觉得我的代码,如果我把它用-std=gnu*
,因为它将使一些更重编译可能话,肯定跑得更快optimizations
GCC通常会产生特殊的代码来处理特定的内置功能 更有效;例如,调用ALLOCA可能变得 单个指令直接调整堆栈,并且调用 的memcpy可能变得内嵌拷贝循环
无的_exit
,alloca
,bcmp
,bzero
,stpcpy
或任何的其它功能
哎哟,你说得对。我想我已经快速阅读了文档并混合了函数列表。但是你的解释仍然存在。谢谢。 –