C++、Objective-c混编陷阱之–错误的头文件引用
来源:互联网 发布:知安天下 编辑:程序博客网 时间:2024/06/18 06:57
用C++/OC混编的时候,如果不是很熟练,经常会碰到类似如下的错误:
- Parse Issue Expected unqualified-id
- Semantic Issue Unknown type name ‘NSString’; did you mean ‘CCString’?
而且这些错误通常是来自OC提供的库文件,比如说NSObjcRuntime.h,这就让人很头大,尤其是像我这样刚学OC的人。
问题解决起来很简单,首先检查xcode设置,把编译器的Compile Sources As选项改为Objective C++;其次仔细检查.cpp文件,看有没有include的头文件中包含了”#import xxxxx”这样的代码。如果有的话,则存在C++/OC的混编,需要将.cpp后缀修改为.mm后缀,这是因为Xcode需要源文件以”.mm”为扩展名,这样才能启动编译器的Objective-C++扩展,否则会把.cpp文件直接按c style来编译,遇到OC的东西,自然就无法解析了。
这里贴一个典型的例子,有下面两个类A、B(类的功能可能有些牵强,但是不影响理解),一个是C++ style,一个是OC style。这种情况下,编译器就会报类似如上的错误
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// A.h
#include <iostream>
using
namespace
std;
class
A
{
public
:
void
printB();
};
// A.cpp
#include "A.h"
#include "B.h"
void
A::printB
{
B* b = [[B alloc] init];
[b display];
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// B.h
#import <Foundation/Foundation.h>
@interface
B :
NSObject
{
float
_b;
}
- (
void
) display;
@end
// B.m
#import "B.h"
@implementation
B
- (
void
) display
{
NSLog
(
@"_b = %f"
, _b);
}
@end
0 0
- C++、Objective-c混编陷阱之–错误的头文件引用
- objective-c与c的混编之道
- 如何在Objective-C的头文件引用C++的头文件
- Objective-C 与 Swift 混编之路
- C常见问题之头文件引用
- Objective-C和C++混编的要点
- Objective-C和C++混编的要点
- Swift 和 Objective-C 混编的 Framework
- C/C++的头文件引用问题
- 详解iPhone开发之Objective-C和 C 混编
- OC和C++混编造成其它类错误的问题(Compile Sources As Objective-C++)
- C++和Objective-C混编
- C++和Objective-C混编
- Objective-C和C++混编
- C++和Objective-C混编
- C++和Objective-C混编
- C++和Objective-C混编
- Objective-C和C++混编
- Dialog
- Win8 装CentOS6.5 双系统 grup 错误 unable to read package metedata
- UML之状态图
- ComputeArea
- crontab题
- C++、Objective-c混编陷阱之–错误的头文件引用
- Android4.2.2 SurfaceFlinger之图形渲染queueBuffer实现和VSYNC的存在感
- 记住密码的实现
- 使用DetailsView单页编辑控件
- [LeetCode]Add Binary
- 无线路由找不到无线网络的原因
- BI工具:tableau桌面版 视频学习笔记(二、分析)
- js实现表单项的全选、反选以及删除操作
- block写法