美文网首页
OC集成C/C++代码的一些随笔

OC集成C/C++代码的一些随笔

作者: 申铭 | 来源:发表于2016-10-26 13:07 被阅读268次

1.集成C/C++时的一些项目配置

在引用C/C++代码时需要改变项目的编译方式或改变文件的后缀名。
(1)改变编译方式:在Xcode的Project -> Edit Active Target -> Build Setting 中找到 Compile Sources As,并将其设置为"Objective-C++"。
(2)改变后缀名:把需要使用C/C++代码的.m文件改为.mm后缀即可。
(3)如要引用采用ObjectC++实现的静态库,需要改变编译方式或将任意一个.m后缀的文件改名为.mm
上述1、2点指的是引入C/C++源码,3点指引入.a文件。

2.long类型在不同环境下的不同

OC语言中long类型在32位系统下是4字节,在64位系统下是8字节。
但是在Windows下不管32位还是64位,long为4字节。
所以,在引入C/C++代码时,一定要注意long类型。
字节数不一致时有可能会引发错误。

Data Type     ILP32       ILP64     LP64      LLP64
char            8           8        8          8
short           16          16       16         16
int             32          64       32         32
long            32          64       64         32
long long       64          64       64         64
pointer         32          64       64         64

绝大部分64位的Unix,linux都是使用的LP64模型;
64位的Windows使用的是LLP64(long long and point 64)模型

上述内容引自:http://blog.csdn.net/xiaofei0859/article/details/5953529

3.有关结构体32位 64位下的不同对齐方式

之前查资料时,有一句这样写道:

除了变量的自身对齐参数外,还有一个对齐参数,就是每个编译器默认的对齐参数#pragma pack(n),
这个值可以通过代码去设定,如果没有设定,则取系统的默认值。
在windows(32)/VC6.0下,n的取值可以为1、2、4、8,默认情况下为8。
在linux(32)/GCC下,n的取值只能为1、2、4,默认情况下为4。

上述内容引自:http://www.cnblogs.com/dolphin0520/archive/2011/09/17/2179466.html

经过实践发现,在Xcode下32位系统时,默认为4字节对齐,64位系统时,默认为8字节对齐。
所以在C/C++代码中,如使用到结构体,一定要格外注意结构体在32位和64位下长度是否一致。

相关文章

  • OC集成C/C++代码的一些随笔

    1.集成C/C++时的一些项目配置 在引用C/C++代码时需要改变项目的编译方式或改变文件的后缀名。(1)改变编译...

  • iOS编译命令

    将OC代码转换成C++代码 OC语言基于C/C++语言,实际上要先经过一层编译将OC代码转换为C++代码,对应的c...

  • OC 对象的底层本质

    OC 的本质 我们平时编写的OC 代码 底层实现其实都是C\C++ 代码 所以OC 的面向对象都是基于C/C++的...

  • 笔记(一):OC对象本质

    一 通用的一些东西 OC 的面向对象是基于C/C++的结构体实现的。 2.OC代码转C++代码 可能会遇到的错误&...

  • iOS OC对象总结

    OC的实现 OC的对象、类主要是基于C、C++的结构体来实现的。编写的 OC代码,底层实现其实都是C、C++代码。...

  • OC 对象的本质

    OC的本质 我们平时写的OC代码的底层都是c/c++代码实现的 OC的面向对象都是基于c/c++的数据结构实现的 ...

  • iOS 面试汇总 - OC语法

    Objective-C的本质 OC代码底层都是C\C++代码 OC的面向对象都是基于C\C++的数据结构实现的 O...

  • OC代码转化成C++代码

    OC代码转化成C++代码

  • OC对象的本质

    一、本质 OC对象的本质是C和C++中的结构体 OC代码转C++代码:clang -rewrite-objc ma...

  • iOS开发之: clang -rewrite-objc

    clang -rewrite-objc的作用是把oc代码转写成c/c++代码,我们常用它来窥探OC的一些秘密。 最...

网友评论

      本文标题:OC集成C/C++代码的一些随笔

      本文链接:https://www.haomeiwen.com/subject/ttrxuttx.html