gpt4 book ai didi

c - 将大型 const 结构传递给函数

转载 作者:太空狗 更新时间:2023-10-29 16:10:31 24 4
gpt4 key购买 nike

假设我使用具有 -O2-O3 优化级别的 GCC 5.4 编译以下内容。

typedef struct {
int data[90];
} huge_t;

int foo( const huge_t bar );

// ...

huge_t x = { 0 };
foo(x);

在这里,我敢说没有必要在堆栈上创建 x 的第二个副本,因为 foo 没有(应该)修改它的参数。 (什么时候)GCC 会得出同样的结论?

换句话说,为了方便起见,我可以使用 huge_t 类型的 const 参数吗,还是应该使用指针?我可以想象这两个版本在某种意义上都是“良好的风格”,并且非常感谢有见识的意见。

最佳答案

如果你看这里:Why isn't pass struct by reference a common optimization?

任何 C 编译器都不太可能进行此优化。这通常不是一件安全的事情。

永远不要假设您的优化器会按照您想要的方式做事。优化器必须遵守某些规则,这样他们才不会破坏你的代码。有时您知道优化器不能做到的事情是安全的。如果为了性能,您需要您的代码以某种方式运行,那么就以这种方式编写它。

关于c - 将大型 const 结构传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44417223/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com