c - 返回结果和通过指针参数分配结果之间的区别?

标签 c function pointers return variable-assignment

我正在开发一种简单的编程语言,实际上是一个 C 代码生成器,为了简化,我想在 C 中将所有函数表示为没有返回类型,并将返回类型作为第一个参数传递(如果有)。

我的问题是这是否会带来兼容性或性能问题,我不太确定到底有什么区别,但常见逻辑表明这与将返回值分配给返回地址的函数没有太大区别与手动执行此操作相比,地址是一个参数。但也许还有一些额外的工作正在进行?也许会启动不同的优化?

最佳答案

对于复杂的返回类型,您可能是对的,没有区别。

对于简单的返回类型,编译器会将结果返回到寄存器中,例如对于

int foo(...);

但是如果您传递一个指向结果存储的指针,如下所示:

void foo (int* result, ...);

不能(至少在一般情况下不能)。

但我建议稍后再考虑优化并忽略可能的性能影响。如果您不是经验丰富的语言设计师,您还会有其他问题需要担心。之后,根据您的设计,您将有其他优化机会。例如:如果将所有 C 代码生成到一个文件中,则可以让 C 编译器执行积极的内联操作 - AFAICS 将消除我们刚才讨论的性能差异。

关于c - 返回结果和通过指针参数分配结果之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18137520/

相关文章:

c++ - 删除动态数组?

使用指针打印字母表的 C 函数

将 const char** 转换为 void*?

计算结构尺寸

c - 在 C 中使用带有 RSA 的 SHA1 对数据数组进行签名

function - Typescript 中函数的通用返回类型

css - 将多个函数以类似的模式结合在一起 excel

C++ 从函数数组中调用函数

c - 在支持 Windows XP 的 C 语言中获取和设置默认网关

Android:打开相机并获取C级别的原始数据