ohh*_*hho 0 ios ios7.1 xcode5.1
我在Xcode 5.1 vanilla单视图项目中添加了两个文件:
table.h
struct group {
int size;
};
Run Code Online (Sandbox Code Playgroud)
table.c
#include "table.h"
Run Code Online (Sandbox Code Playgroud)
并得到此错误:
Semantic issue
table.h:2:8: Redefinition of 'group'
Run Code Online (Sandbox Code Playgroud)
"以前的定义"是:
iOS 7.1 > usr/include > grp.h
Run Code Online (Sandbox Code Playgroud)
我想知道为什么这grp.h会自动包含在我的项目中.我怎么能不包括它?
grp.h是标准的Unix级文件之一,它定义了一些基本的数据结构; 在这种情况下,struct group是处理用户权限的低级C函数返回的内容.
至于为什么它包含在你的项目中的问题:当你在Xcode中创建一个新项目时,它会创建一个包含文件,隐含地包含在项目的每个.m或.c文件中.在我刚刚创建的项目中尝试了这个,它位于文件浏览器中的一个叫做Supporting Files名字的组中[project]-Prefix.pch.我的内容如下:
#import <Availability.h>
#ifndef __IPHONE_5_0
#warning "This project uses features only available in iOS SDK 5.0 and later."
#endif
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#endif
Run Code Online (Sandbox Code Playgroud)
倒数第二行,#import <Foundation/Foundation.h>然后包括所有内置的Objective-C对象NSObject,NSArray以及一些与文件系统一起工作的东西,因此需要能够处理权限和组成员身份.其中一个包括grp.h.
因此,回到您的问题 - 您可以将.pch文件更改为不包含Foundation/Foundation.h,然后手动将其包含在您需要的任何位置.
但这最终会减慢所有构建速度..pch这里的文件很特别; Xcode将其编译一次并以二进制格式保存,因此它不必解析为您构建的每个文件扩展的数千行C代码.
我的建议?为结构命名别的东西.
| 归档时间: |
|
| 查看次数: |
981 次 |
| 最近记录: |