Xcode 4.2 - 在此功能警告之外不会显示'...'的声明

Ser*_*nsk 161 iphone ios xcode4 ios5

我使用Apple Sample Reachability中的 Apple Reachability类

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

+ (Reachability*) reachabilityWithAddress: (const struct sockaddr_in*) hostAddress;
Run Code Online (Sandbox Code Playgroud)

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

我不擅长经典C%)所以我不明白我怎么能解决这个警告,或者可能是我可以忽略它.

谢谢

Sau*_*abh 353

添加#import <netinet/in.h>Reachability.h以逃避这一点

  • `#include`,而不是`#import`.由于C和Objective-C标头之间的细微差别,您应该只对Objective-C使用`#import`.Pure C应该继续使用`#include`. (8认同)
  • 我忘了格式化为代码和stackoverflow删除<netinet/in.h>为我:( (7认同)
  • `#import`将阻止标题两次进入编译单元.`#include`将允许它(然后使用保护宏来防止重复的符号.)有些标题*期望*被带入两次. (7认同)
  • 您也可以执行缺少结构的前向声明,而不是#import.添加一个"struct sockaddr_in;" 行到.h文件 (6认同)
  • 注意:导入已存在于Reachability.m中 - 但在Reachability.h中也需要它 (3认同)
  • @aroth - "如果有人设置了标题,以便它需要被带入两次(或更多),那么他们就做错了." - 不是真的,你可以使用宏制作模板,例如哈希表等,你需要*多次包含不同的defs,以便定义不同的结构.示例:https://klib.svn.sourceforge.net/svnroot/klib/trunk/klib/khash.h (2认同)