假设我在源文件中有这个小函数

static void foo() {}

我构建了一个优化版本的二进制文件,但我不希望这个函数内联(出于优化目的).有没有可以在源代码中添加宏来防止内联?

推荐答案

您需要特定于gccnoinline属性.

此函数属性防止 函数不会被考虑为 内衬.如果函数没有 有副作用,有 优化,而不是内联 使函数调用得到优化 离开,尽管函数调用是 活着.为了不让这样的电话 优化了,把 asm ("");

按如下方式使用它:

void __attribute__ ((noinline)) foo() 
{
  ...
}

C++相关问答推荐

自定义应用程序上的日志(log)轮换问题

这是一个合法的C Strdup函数吗?

自定义变参数函数的C预处置宏和警告 suppress ?

如何捕捉只有换行符或空格字符缓冲区的边缘大小写

如何使用指向 struct 数组的指针并访问数组中特定索引处的 struct

Square不与Raylib一起移动

用C语言计算文本文件中的整数个数

如何在GET_STRING输入后对少数几个特定字符串进行C判断?

为什么Fread()函数会读取内容,然后光标会跳到随机位置?

这段代码用于在C中以相反的顺序打印数组,但它不起作用

C-try 将整数和 struct 数组存储到二进制文件中

S,在 struct 中创建匿名静态缓冲区的最佳方式是什么?

使用正则表达式获取字符串中标记的开始和结束

即使我在C++中空闲,也肯定会丢失内存

分配给静态变量和动态变量的位置之间有区别吗?

如何使用 raylib 显示数组中的图像

我如何(合规地)从 tmpfile() 读取?

如何使用递归计算并打印前 N 个素数

我如何修复我的代码以防止 CS50 第 2 周的复数问题中的 2 个错误?

如何在 C 中从整数打印 128-255 个字符?