概述
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++的全部内容,希望文章能够帮你解决iOS 之 OBJECTC 调用C、OBJECTC调用C++所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复