Xcode 4.2 - '...'的声明在此函数外部不可见警告

161

我使用苹果的可达性类(Apple Reachability class)来自苹果示例代码 Reachability

在Xcode 4.2和新的苹果3.0编译器中,我在这个类中得到了警告:

+ (Reachability*) reachabilityWithAddress: (const struct sockaddr_in*) hostAddress;

'struct sockaddr_in'的声明将不会在该函数之外可见*

我不擅长经典的C语言,因此我不知道如何解决这个警告,或者是否可以完全忽略它。

谢谢


2
请参考:https://dev59.com/NGw15IYBdhLWcg3wYKqo#8684721 - Ben Flynn
1个回答

352

在Reachability.h中添加#import <netinet/in.h>以解决此问题。


7
我忘记将它格式化为代码,stackoverflow把<netinet/in.h>删除了:( - Saurabh
3
注意:导入已经存在于Reachability.m中,但在Reachability.h中也需要。 - brainray
8
由于C语言和Objective-C头文件之间存在微妙的差异,因此您只应该在Objective-C中使用#import,而纯C仍应继续使用#include - Jonathan Grynspan
7
#import可以防止一个头文件被重复引入到编译单元中。而#include则允许这种情况出现(然后使用宏来防止重复的符号)。有些头文件是期望被重复引入的。 - Jonathan Grynspan
6
你可以使用缺失结构体的前向声明代替 #import。在 .h 文件中添加单行 "struct sockaddr_in;" 即可。 - fishinear
显示剩余7条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接