在严格模式下运行时,GCC会禁用许多内置函数-std=c...
。
在严格的 ISO C 模式(-ansi、-std=c90、-std=c99 或 -std=c11)之外,函数 _exit、alloca、bcmp、bzero ... stpcpy,... 可以作为内置函数处理. 所有这些函数都有相应的版本前缀_builtin,即使在严格的 C90 模式下也可以使用。
有什么理由吗?内置函数不符合吗?或者这是因为标准说当你调用memcpy
它时应该实际调用它并且我无法优化?
我觉得如果我使用重新编译它,我的代码肯定会运行得更快,-std=gnu*
因为它会启用更多优化
GCC 通常会生成特殊代码来更有效地处理某些内置函数;例如,对 alloca 的调用可能成为直接调整堆栈的单个指令,对 memcpy 的调用可能成为内联复制循环