gpt4 book ai didi

objective-c - 为什么我不能使这个函数内联?

转载 作者:行者123 更新时间:2023-12-04 05:50:13 26 4
gpt4 key购买 nike

如果我使这个函数内联并从objective-c 方法调用它,它会给我一个clang: error: linker command failed with exit code 1 (use -v to see invocation)

Vector addv(Vector v1, Vector v2) {// works
return (Vector){v1.x + v2.x, v1.y + v2.y, v1.z + v2.z};
}

inline Vector addv(Vector v1, Vector v2) {// if I call this, does not build
return (Vector){v1.x + v2.x, v1.y + v2.y, v1.z + v2.z};
}

为什么会这样,我能做些什么来解决它?

最佳答案

C99 inline不保证发出链接器符号。您必须在一个编译单元(即 .c)中放置一个“实例化”。

所以inline .h 文件中的定义:

inline Vector addv(Vector v1, Vector v2) {// if I call this, does not build
return (Vector){v1.x + v2.x, v1.y + v2.y, v1.z + v2.z};
}


Vector addv(Vector v1, Vector v2);

在一个 .c 文件中生成符号。

关于objective-c - 为什么我不能使这个函数内联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10155533/

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