gcc的VC ++编译器选项/ Oi是什么?

问题描述

/ Oi允许VC ++编译器使用内部函数。 gcc 9或10中的等效值是什么?

gcc -O3编译器选项是否可以启用内部函数

解决方法

您要搜索的是内置函数。
https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Other-Builtins.html

默认情况下启用了建筑物:

-fno-builtin
-fno-builtin-function

Don’t recognize built-in functions that do not begin with ‘__builtin_’ as prefix. See Other built-in functions provided by GCC,for details of the functions affected,including those which are not built-in functions when -ansi or -std options for strict ISO C conformance are used because they do not have an ISO standard meaning.

GCC normally generates special code to handle certain built-in functions more efficiently; for instance,calls to alloca may become single instructions which adjust the stack directly,and calls to memcpy may become inline copy loops. The resulting code is often both smaller and faster,but since the function calls no longer appear as such,you cannot set a breakpoint on those calls,nor can you change the behavior of the functions by linking with a different library. In addition,when a function is recognized as a built-in function,GCC may use information about that function to warn about problems with calls to that function,or to generate more efficient code,even if the resulting code still contains calls to that function. For example,warnings are given with -Wformat for bad calls to printf when printf is built in and strlen is known not to modify global memory.

With the -fno-builtin-function option only the built-in function function is disabled. function must not begin with ‘__builtin_’. If a function is named that is not built-in in this version of GCC,this option is ignored. There is no corresponding -fbuiltin-function option; if you wish to enable built-in functions selectively when using -fno-builtin or -ffreestanding,you may define macros such as:

#define abs(n)          __builtin_abs ((n))
#define strcpy(d,s)    __builtin_strcpy ((d),(s))

https://gcc.gnu.org/onlinedocs/gcc/C-Dialect-Options.html#C-Dialect-Options

当您看到O3启用的优化时,没有提及内置函数。 https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html