如果我内联这个函数并从 Objective-C 方法调用它,它会给我一个 clang: error: linker command failed with exit code 1 (use -v to see incall)
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)中放置一个“实例化”。
因此 .h 文件中的 inline
定义:
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/