我使用一个工具生成了一个 111k 行长的 C++ 类实现。它生成的方法可以正常工作,但它们往往会在它们使用的 API 中触发缓慢的路径。
有没有什么办法,在 Mac OS X 上使用 Clang,我可以在不同的源文件中手动实现一些最常用的方法,并告诉链接器(或任何其他相关程序)忽略工具生成的方法是否存在该方法的另一个实现?
我可以完全控制该工具的输出,尽管很难自动生成更好的代码。
最佳答案
如果代码在库中交付,则链接器会搜索连续库中的 .o 文件,直到满足所有未解析的符号为止。因此,如果您的代码生成可以确保将弱代码分离到不同的 .cpp 文件中,那么您可以在链接路径上的较早的 .a 中交付自定义编写的版本,该版本将在代码生成提供的 .a 之前使用。
或者,如果您可以在代码中添加一个错误的模板,那么您可以为代码指定一个明确的特化。这将由编译器/链接器使用,因为它是一个特定的特化。
关于macos - 我如何告诉链接器使用方法的多个实现中的哪一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31632838/