2

如果我使这个函数内联并从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};
}

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

4

1 回答 1

3

C99inline不保证发出链接器符号。您必须在一个编译单元(即 .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 文件中生成符号。

于 2012-04-14T17:26:59.573 回答