如果我将此函数内联并使用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};
}
为什么要这样做,我该怎么做才能解决它?
答案 0 :(得分:3)
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文件中生成符号。