gpt4 book ai didi

objective-c - Objective-C中使用C函数多次导入头文件

转载 作者:行者123 更新时间:2023-11-30 14:23:34 29 4
gpt4 key购买 nike

在我的 Xcode 项目中,我使用以下 C 实用函数创建了一个独立的头文件:

#ifndef FOO
#define FOO
CGFloat DistanceBetweenTwoPoints(CGPoint p1, CGPoint p2)
{
CGFloat dx = p2.x - p1.x;
CGFloat dy = p2.y - p1.y;
return sqrt(dx*dx + dy*dy);
};
#endif

即使使用预处理器指令,如果我尝试在多个位置导入包含该头文件,我也会收到以下错误,提示重复的符号:

linker command failed with exit code 1

有什么不同的方法可以达到这个效果吗?这个问题更多的是出于好奇。

谢谢

最佳答案

将函数体放入 .c 中文件和 .h 中的函数声明(又名原型(prototype))与那些#ifndef等然后使用include在需要该函数的地方导入头文件。

记得检查 .c 的目标成员资格文件,否则无法编译。

对于像这样的小函数,您可以声明它 inline只需使用头文件:

inline CGFloat DistanceBetweenTwoPoints(CGPoint p1, CGPoint p2)
{
// code as is
}

编译器将用函数代码替换您的函数调用,而无需实际构建和链接新的目标文件。不再有重复的符号。

关于objective-c - Objective-C中使用C函数多次导入头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12782542/

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