代码之家  ›  专栏  ›  技术社区  ›  ReaperUnreal

从函数返回一对项

  •  4
  • ReaperUnreal  · 技术社区  · 14 年前

    我知道所有正常的方法,我要找的是一篇我很久以前读过的文章,它展示了如何使用内联程序集和裸函数来返回一对项来编写一些疯狂的助手函数。

    我试过没完没了地用谷歌搜索,但没用,我希望有人知道我在说的文章,并有一个链接。

    2 回复  |  直到 14 年前
        1
  •  11
  •   pmg    14 年前

    无需装配

    struct PairOfItems {int item1;double item2;};
    struct PairOfItems crazyhelperfunction(void){
        struct PairOfItems x = {42, -0.42};
        return x;
    }
    

    我不知道这篇文章。

        2
  •  -1
  •   nategoose    14 年前

    这个 __naked 我知道的是

    #define __naked __attribute__((naked))
    

    这是一个GCC属性 here .

    并非所有目标都支持它。做一个 google code search 不过,会有一些用处。

    它作为宏执行的原因是,对于不支持它的目标,或者如果头与其他编译器一起使用,则可以将其定义为空。

    我记得(我想)在除法和调制中看到过一些这样的例子( divmod )avr_gcc头的函数。这将返回一个结构,该结构中包含两个返回值,但将整个内容存储在寄存器中,而不是堆栈中。

    我不知道 __裸体的 与在寄存器(而不是堆栈)中返回结果的两部分(在结构中)有关,但它确实允许内联函数完全由对一个helper函数的调用组成。