gpt4 book ai didi

c++ - 内联和非内联

转载 作者:行者123 更新时间:2023-11-30 01:30:23 25 4
gpt4 key购买 nike

假设我有:

struct Vec3 {
double x;
double y;
double z;
} ;

inline double dot(const Vec3& lhs, const Vec3& rhs) {
return lhs.x * rhs.x + lhs.y * rhs.y + lhs.z * rhs.z ;
}

是否有可能在非内联版本中也存在“点”,以便它可以在 *.so 中,这样当我 dl 打开它时我可以调用它?

即我希望包含上述 header 的文件使用内联版本,但我也希望该函数存在于 *.so 中,以便我可以 dl 打开它并动态调用它。

最佳答案

你可以这样做:

inline double dot(const Vec3& lhs, const Vec3& rhs) {
return lhs.x * rhs.x + lhs.y * rhs.y + lhs.z * rhs.z;
}

double dot(const Vec3* lhs, const Vec3* rhs) {
return dot(*lhs, *rhs);
}

这样做的好处是,如果您随后将“指针”版本声明为 extern "C",那么 C 程序也可以使用它。 (C 不支持引用,但支持指针——因此您不能 extern "C" "reference"版本。)

关于c++ - 内联和非内联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4527824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com