c++ - 内联函数和调用约定

原文 标签 c++ visual-c++ inline simd calling-convention

为内联函数指定调用约定是否有意义?例如,我正在编写SIMD数学库,建议在其中使用__vectorcall,但是我所有的函数都是内联的。在一些文章中,我看到人们内联所有功能,但仍然说,您需要使用默认的__vectorcall约定编译库(或实际上放置此属性)。
当函数不是内联时,我可以看到汇编的区别。但是,由于内联函数实际上不是函数调用,因此为内联函数指定调用约定有什么意义呢?仅为非内联函数指定__vectorcall更好吗?

最佳答案

inline关键字仅是对编译器的建议;它不能保证函数会被内联。例如,不能内联递归函数,如果使用函数指针,则编译器可能需要生成否则为内联函数的非内联副本。此外,对内存和空间的限制可能会阻止编译器内联函数。

结果,即使您将函数标记为内联,也仍将在适当时指定调用约定,因为无法保证编译器确实会消除函数调用。

关于c++ - 内联函数和调用约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37899784/

相关文章:

c++ - 在 C++ 中,我想创建一个循环,不断检查文件的大小,并在大小发生变化时执行某些操作

c++ - make 的自动依赖生成 .d 文件但不读取它们

c++ - 如何确保一次只有一个进程访问共享内存

c++ - log4cpp和链接错误

css - 显示内联 block 以实现此目的的正确方法

c++ - "!"对绑定(bind)成员函数表达式的非法操作

c++ - 在 std::string 上使用 strtol

visual-c++ - 如何在 C++ CLI 中获取枚举项的名称?

python - 如何编写内联if语句进行打印?

css - 如何在section标签中设置相同图片的不同背景图片格式(png和webp)