指定内联函数的调用约定是否有意义?例如,我正在编写 SIMD 数学库,建议使用 __vectorcall
,但我的所有函数都是内联的。在一些文章中,我看到人们内联所有函数,但仍然说,您需要使用默认的 __vectorcall
约定(或实际放置此属性)来编译库。
当函数不是内联时,我可以看到汇编中的差异。但是为内联函数指定调用约定有什么意义,因为它不是真正的函数调用?仅针对非内联函数指定 __vectorcall
不是更好吗?
最佳答案
inline 关键字只是对编译器的一个建议;它不保证函数将被内联。例如,递归函数不能内联,如果您使用函数指针,编译器可能需要生成其他内联函数的非内联拷贝。此外,对内存和空间的限制可能会阻止编译器内联函数。
因此,即使您将函数标记为内联,您仍然需要在适当的情况下指定调用约定,因为无法保证编译器确实会消除函数调用。
关于c++ - 内联函数和调用约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37899784/