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位下长度是否一致。