我是靠谱客的博主 想人陪哑铃,最近开发中收集的这篇文章主要介绍iOS 之 OBJECTC 调用C、OBJECTC调用C++,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

}




最后

以上就是想人陪哑铃为你收集整理的iOS 之 OBJECTC 调用C、OBJECTC调用C++的全部内容,希望文章能够帮你解决iOS 之 OBJECTC 调用C、OBJECTC调用C++所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部