文件區(qū)別:
.h:頭文件。頭文件包含類,類型,函數(shù)和常數(shù)的聲明。
.m :源代碼文件。這是典型的源代碼文件擴(kuò)展名,可以包含Objective-C和C代碼。
.mm :源代碼文件。帶有這種擴(kuò)展名的源代碼文件,除了可以包含Objective-C和C代碼以外還可以包含C++代碼。僅在你的Objective-C代碼中確實(shí)需要使用C++類或者特性的時(shí)候才用這種擴(kuò)展名
.cpp:只能編譯C++
當(dāng)你需要在源代碼中包含頭文件的時(shí)候,你可以使用標(biāo)準(zhǔn)的#include編譯選項(xiàng),但是Objective-C提供了更好的方法。#import選項(xiàng)和#include選項(xiàng)完全相同,只是它可以確保相同的文件只會(huì)被包含一次。Objective-C的例子和文檔都傾向于使用#import。
.m 和.mm 的區(qū)別是告訴gcc 在編譯時(shí)要加的一些參數(shù)。當(dāng)然.mm還可以命名成.m,但在編譯時(shí)要手動(dòng)加參數(shù)(麻煩)
常用場(chǎng)景:
如果你的OC代碼里面有包含C++的引用或代碼,將此類更改為.mm即可;
例子:
ERROR:./zxing/cpp/core/src/zxing/common/Counted.h:21:10: 'iostream' file not found
在引用zxing的時(shí)候#import用到了iostream,但是它是/iphoneOS6.1/user/include/c++下面的類,故需要把類名改為.mm即可
注意#import或#include的位置要在.mm文件里,如果在.h頭文件里是沒用的