原文地址::http://blog.csdn.net/dream_it_life/article/details/5488121.net
最近由於須要,要用C,C++,Objective-C三種C語言3C混編的開發程序,在固然方法也和你們說一下吧,就是在Xcode環境中把C語言的.c文件,C++的.cpp文件與Objective-C的.m文件的文件名所有修改爲.mm,這樣就能夠啓用Objective-C++的編譯環境3C混編了,但是遇到了上述問題,網上的說法不一致,並且我也遇到了屢次這個問題,最後解決的方式也不同,因此最後把全部可能的狀況總結了一下:code
1)static方法名重複-由於C語言裏沒有對象的概念,它的方法只要加入相應的.h文件就可使用,因此,若是和C++ or Objective-C的靜態方法重名了,那麼環境沒法區分,很明顯,這個錯誤是編譯時候的錯誤,而對於static的變量及方法是在編譯的時候便被加入的,因此沒法識別.對象
2)全局變量名重複,理由和上面是同樣的,固然,若是是全局變量,建議在Objective-C的.m文件(固然如今被改爲.mm了)中聲名,否則,聲明在.h中單獨使用是沒有問題的,若是直接引用了C or C++的.h,那麼即便這時候全局變量不重複,也會出現上面的問題.blog
3)含有多個main方法,main方法是程序的入口,若是有多個文件含有main方法,那麼也會出現上面的問題.開發
總的來講,這個問題是由於方法或是全局變量重複所致使的編譯環境沒法識別並編譯 it