加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在iPhone/iPad项目中#import C头文件时出现问题

发布时间:2020-12-15 01:50:38 所属栏目:百科 来源:网络整理
导读:我有一个C类,我想在iPhone / iPad项目中使用. 我以不同的方式创建了这个文件(比如“New File”= C),错误总是一样的. 当我编译项目时没有任何#import(.h C类),没关系. 但是只要我在我的一个标题objective-c文件中#import头文件,我就会得到如下错误: error: v
我有一个C类,我想在iPhone / iPad项目中使用.
我以不同的方式创建了这个文件(比如“New File”=> C),错误总是一样的.

当我编译项目时没有任何#import(.h C类),没关系.

但是只要我在我的一个标题objective-c文件中#import头文件,我就会得到如下错误:

error: vector: No such file or directory

要么

error: expected ‘=’,‘,’,‘;’,‘asm’ or ‘attribute‘ before ‘:’ token”

我尝试在文件信息中为文件类型(C类)设置不同的值,在.mm等中重命名我的objc类,但它似乎不起作用.

所以我一定错过了在objc头文件中导入.h c类的内容,但是:p ^^

解决方案感谢Vlad
1°)要包含标题c文件:

#ifdef __cplusplus
    #include "Triangulate.h"
#endif

2°)重命名.mm中的objc文件和他的文件信息(右侧clic)设置文件类型为sourcecode.cpp.objcpp

谢谢你的帮助!
文森特

解决方法

Note: Xcode requires that file names
have a “.mm” extension for the
Objective-C++ extensions to be enabled
by the compiler.

尝试在驻留在扩展名为.m的文件中的Objective-C代码中使用C是问题的最可能原因,因为编译器根据错误消息不能识别C构造.将.m文件重命名为.mm应该会有所帮助.

有关更多详细信息,请参阅Using C++ with Objective-C.

假设您想在Objective-C源文件中使用Objective-C类,则完全没有问题.唯一的限制是你的.h文件必须是Objective-C clean.这意味着您不能在其中使用任何C -isms,或者如果您这样做,则必须将它们全部包装在#ifdef __cplusplus中.当标题#included由一个普通的Objective-C文件包含时,标题将被编译为ObjC模式,所以它必须消除那种情况的任何C主义(1).所以你的Objective-C头文件应该像这样包含C头:

#ifdef __cplusplus
# include MyCPPHeader.h
#endif

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读