GCC/Clang的section
属性可以用来将函数/数据放到特定的section中。然而,当从这样的函数中使用模板时,它在默认的文本部分中被实例化(当然,除非它也被标记为section
属性)。在使用第三方模板库的情况下,是否有一种方法可以使模板实例化发生在调用它们的函数的同一部分中,而无需修改模板?我已经尝试使用flatten
属性,但这并不总是工作(即使它做了,它也会导致不必要的膨胀,如果说模板很大,依赖于其他模板,和/或在其他地方使用)。
对于上下文,我正在开发一个嵌入式平台,其中有多个RAM存储器银行映射到线性地址空间。每个银行都有不同的延迟和总线大小,所以热/冷代码的位置很重要。
您可以将链接器定义文件(LD)添加到链接器,
并指示将您想要的任何模块,函数或节抛出到您希望的任何位置的任何节。
有点乏味,但给了最大的控制。