我想知道,可以明确指定一个自定义调用约定,但考虑到编译器中找到的优化的成熟度和数量,当没有指定调用约定时,我是否可以期望编译器选择最好的一个特殊功能,例如,如果参数很少,原始使用fastcall等等......
答案 0 :(得分:3)
出于某种原因,这是一个“惯例”。每个人都必须遵循惯例,否则你无法从另一个模块调用你的函数。
但是,如果该功能不可见,则GCC有选项。它可以内联函数或调用它,但它想要。它甚至可能将它分成“热”和“冷”部分并内联热代码路径。这通常仅在使用配置文件引导优化进行构建时才会发生。
如果您希望GCC进行这样的优化,请继续隐藏您的功能。如果要构建可执行文件,请查看-fwhole-program。如果您正在构建库,请查看-fvisibility = hidden。另请参阅-flto。