原文地址::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