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

标签 objective-c c function inline

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

相关文章:

ios - 将int变量保存到解析对象

iOS 7 - 带有 UIViewcontrollerAnimatedTransitioning 的模态弹出窗口

objective-c - NSObject From String ...有什么办法吗?

objective-c - setImage 动画 - NSImageView

C 将 argv[] 中的字符串分配给 char 数组

javascript - 如何在 html 正文上打印函数结果?

c - 尝试运行程序的两个部分第二部分无法输入字符串

c - 在 C 中打印网格

python - 如何在 scikit-learn 的 LogisticRegressionCV 调用中将参数传递给评分函数

c++ - 函数声明错误, "expected constructor, destructor, or type conversion before ' ;' token"