iOS 之 OBJECTC 调用C、OBJECTC调用C++
来源:互联网 发布:三菱伺服选型软件 编辑:程序博客网 时间:2024/06/10 07:50
iOS 平台软件开发使用 OBJECTC 会经常使用 C 或 C++ 目的主要:
1. 复用之前成熟的代码
2. 复用开源项目代码 毕竟开源成熟的C/C++ 很多
3. 像STL非常方便开发的标准库 也习惯了,当然也想复用
4. 总之,每种情况下就想用C/C++ 代码
有以下情况混合
1. OBJECTC 调用 C
这是 OBJECTC 的天生所在,xcode本身就支持 ,记住 C 必须是 C 函数,且文件必须是.C,如果文件是.CPP 则必须加上 "extern C"
注意:
调用C++ 的函数,不能再.h中声明,加 “extern"C"”也一样,因为OBJECTC 不识别,OBJECTC 认为是C范式,而.CPP则是 C++范式,
函数名生成贵州不一样,导致找不到函数。
正确做法:
在.CPP 中 实现 ,.H啥也不要做
extern "C"void Test()
{
printf("===========Test OBJECTC CALL CPP====!\n");
}
extern void Test();
然后再任意OBJECTC 类中得函数中 调用
Test()
2.OBJECTC 调用 C++
首先必须把.m 改为 .mm
C++ 的文件不用说了后缀, 然后再.mm 里 跟正常调用C++ 使用 一样 ,函数直接调用,对象直接new,记得delete
可以在.mm 正常使用 C++ 一切语法
如使用STL
#include <string>
using namespace std;
class MyTest
{
public:
MyTest();
void Print();
};
MyTest::MyTest()
{
}
void MyTest::Print()
{
fprintf("MyTest::Print!\n");
}
然后可以在任意OBJECTC类中得函数调用
string str = "i love you ";
NSLog(@"%s",str.c_str());
MyTest* pTest = new MyTest;
pTest->Print();
3.C++ 调用 OBJECTC (这种情况少见)
首先必须把.m 改为 .mm ,且 C++ 函数 或 类 必须也再 .mm文件 声明 和 实现。
在.mm 文件中
class MyTest
{
public:
MyTest();
void Print();
};
MyTest::MyTest()
{
}
void MyTest::Print()
{
NSLog(@"MyTest::Print");
}
- iOS 之 OBJECTC 调用C、OBJECTC调用C++
- objectc-c 内存
- objectc-c 内存
- Objectc-c 方法参数传递
- [ObjectC]Objective-C内存管理机制
- objectc -c 之 property 与synthesize小记 (2)
- [ObjectC]Objective-C内存管理之---属性修饰词
- Objectc-c方法如何传递多个参数?
- Object-C-Ubuntu搭配ObjectC编译环…
- Objectc-c方法如何传递多个参数
- Objectc-c方法如何传递多个参数?
- 转载大神IOS开发系列【4】--ObjectC语言之基础知识
- iOS开发ObjectC内存管理
- ios - objectC 的isa 详解
- Iphone开发基础篇(一)-ObjectC之Hello ObjectC
- IOS基础:IOS及ObjectC基础知识
- IOS基础:IOS及ObjectC基础知识
- objectc 属性
- java项目命名规范
- Jfinal进阶系列之初体验
- 《Effective C++》学习笔记——条款39
- C++ 红黑树
- Multism14 下载及安装
- iOS 之 OBJECTC 调用C、OBJECTC调用C++
- 【PAT】1035. 插入与归并(25)
- Nginx反向代理上传大文件报错(failed to load resource : net :: ERR_CONNECTION_RESET)
- Git
- 初学Phaser.js之碰撞检测
- LeetCode:2 Add Two Numbers
- NLTK提取全文词干
- processing 常用代码片段(持续更新)
- 2016寒假训练——寒假结束