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