1.集成C/C++時(shí)的一些項(xiàng)目配置
在引用C/C++代碼時(shí)需要改變項(xiàng)目的編譯方式或改變文件的后綴名。
(1)改變編譯方式:在Xcode的Project -> Edit Active Target -> Build Setting 中找到 Compile Sources As畦木,并將其設(shè)置為"Objective-C++"粒氧。
(2)改變后綴名:把需要使用C/C++代碼的.m文件改為.mm后綴即可。
(3)如要引用采用ObjectC++實(shí)現(xiàn)的靜態(tài)庫(kù)栖榨,需要改變編譯方式或?qū)⑷我庖粋€(gè).m后綴的文件改名為.mm
上述1、2點(diǎn)指的是引入C/C++源碼,3點(diǎn)指引入.a文件却汉。
2.long類型在不同環(huán)境下的不同
OC語(yǔ)言中l(wèi)ong類型在32位系統(tǒng)下是4字節(jié),在64位系統(tǒng)下是8字節(jié)荷并。
但是在Windows下不管32位還是64位合砂,long為4字節(jié)。
所以源织,在引入C/C++代碼時(shí)翩伪,一定要注意long類型。
字節(jié)數(shù)不一致時(shí)有可能會(huì)引發(fā)錯(cuò)誤。
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)模型
上述內(nèi)容引自:http://blog.csdn.net/xiaofei0859/article/details/5953529
3.有關(guān)結(jié)構(gòu)體32位 64位下的不同對(duì)齊方式
之前查資料時(shí),有一句這樣寫(xiě)道:
除了變量的自身對(duì)齊參數(shù)外轻姿,還有一個(gè)對(duì)齊參數(shù)犁珠,就是每個(gè)編譯器默認(rèn)的對(duì)齊參數(shù)#pragma pack(n),
這個(gè)值可以通過(guò)代碼去設(shè)定互亮,如果沒(méi)有設(shè)定犁享,則取系統(tǒng)的默認(rèn)值。
在windows(32)/VC6.0下豹休,n的取值可以為1饼疙、2、4慕爬、8窑眯,默認(rèn)情況下為8。
在linux(32)/GCC下医窿,n的取值只能為1磅甩、2、4姥卢,默認(rèn)情況下為4卷要。
上述內(nèi)容引自:http://www.cnblogs.com/dolphin0520/archive/2011/09/17/2179466.html
經(jīng)過(guò)實(shí)踐發(fā)現(xiàn),在Xcode下32位系統(tǒng)時(shí)独榴,默認(rèn)為4字節(jié)對(duì)齊僧叉,64位系統(tǒng)時(shí),默認(rèn)為8字節(jié)對(duì)齊棺榔。
所以在C/C++代碼中瓶堕,如使用到結(jié)構(gòu)體,一定要格外注意結(jié)構(gòu)體在32位和64位下長(zhǎng)度是否一致症歇。