gpt4 book ai didi

c++ - 在源文件中内联

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:55:33 26 4
gpt4 key购买 nike

我有一个包含很多实用函数的大类。这些函数非常小,我希望它们内联。

问题是它们都在一个源文件中,应该留在源文件中而不是移动到头文件中(所以我不需要每次更改都重新编译所有内容)。

如果我将它们标记为内联,我会得到

symbols not found

有没有办法让它们内联,或者我是否需要盲目信任链接时间优化器?
我需要代码可以在 clang 3 和 gcc 4.6 之间移植,但是基于编译器的 #define 是可以的(所以回答如何只在一个编译器中做它也很好)。

最佳答案

[These] functions are very small and I would like them inlined. [But] I don't [want] to recompile everything every time one changes.

你不能同时拥有这两种东西。如果一个函数是内联的,那么您别无选择只能在它发生变化时重新编译它的所有调用者。这就是内联的工作原理。即使您使用链接时优化器在链接时自动执行此操作,您仍将支付重新处理所有调用者的编译时间成本。

AFAIK 顺便说一句,gcc 4.6 和 clang 3 都没有达到标准的链接时优化器。

除编辑外:据我所知,还没有编译器具有足以使手动 inline 注释变得不必要的启发式方法。即使是我在评论中提到的 VS2010 作为链接时优化器的一个例子, 仍然需要关于内联内容的相当多的建议。

关于c++ - 在源文件中内联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7883022/

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