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

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++代码的一些随笔)