iOS 之 OBJECTC 调用C、OBJECTC调用C++

9 篇文章 1 订阅
1 篇文章 0 订阅

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");

}


再在 .m 声明

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");

}




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值