c - 用gcc内联C代码中的所有函数

标签 c gcc inline

我有很多没有递归的 C 程序。 我想获得没有用户定义函数但有主要功能的程序。 GCC 可以做 inline但那是在 IR 级别,所以我无法获得 C 代码。

来源:

int calc(int a , int b)
{
    a=a+b-2;
    return a ;
}

int main()
{
    int x=4,y=7;
    x=calc(x,y);
    return 0 ;
}

目标:

int main()
{
    int x=4,y=7;
    int calc_A=x,calc_B=y;
    calc_A=calc_A+calc_B-2;
    x=calc_A;
    return 0 ;
}

最佳答案

gcc提供了一个函数属性,叫做always_inline .

用法:

int add(int arg1, int arg2)__attribute__((always_inline)); // prototype
int add(int arg1, int arg2){
    return arg1+arg2;
}

但是,您必须手动将此属性附加到每个函数。

我仍然假设您的所有函数都遵循内联所必需的规则。例如没有转到,递归等。

关于c - 用gcc内联C代码中的所有函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13970806/

相关文章:

c - 传递一个数组和一个指向函数的指针

c++ - 在 C 中开始图形界面编程的最佳方法是什么?

c++ - C/C++ 中 Delphi 类型的类比

c++ - 如果删除一个对象,究竟会发生什么? (gcc)(当双删除崩溃时?)

java - 解析内联 XML 架构 (Xerces for Java)

c - 什么是内联运算符 C

c - 如何在 C 中的字符串中查找字符串?

c++ - 套接字和文件推荐的缓冲区大小

c - 为什么arm-linux-gcc在进入IRQ模式时只保留r0-r4

c++ - 访问器应该内联吗?