关于c/c++/obj-c的混合使用的总结zz
2009-02-13 17:00
363 查看
[align=center]关于c/c++/obj-c的混合使用的总结zz[/align]
我自己也有一些总结,不过是在自己摸索良久之后得到的。后来看到网友的这篇文章,以前的摸索可以少走一些弯路了。
1)obj-c的编译器处理后缀为m的文件时,可以识别obj-c和c的代码,处理mm文件可以识别obj-c,c,c++代码,但cpp文件必须只能用c/c++代码,而且cpp文件include的头文件中,也不能出现obj-c的代码,因为cpp只是cpp
2) 在mm文件中混用cpp直接使用即可,所以obj-c混cpp不是问题
3)在cpp中混用obj-c其实就是使用obj-c编写的模块是我们想要的。
如果模块以类实现,那么要按照cpp class的标准写类的定义,头文件中不能出现obj-c的东西,包括#import cocoa的。实现文件中,即类的实现代码中可以使用obj-c的东西,可以import,只是后缀是mm。
如果模块以函数实现,那么头文件要按c的格式声明函数,实现文件中,c++函数内部可以用obj-c,但后缀还是mm或m。
总结:只要cpp文件和cpp include的文件中不包含obj-c的东西就可以用了,cpp混用obj-c的关键是使用接口,而不能直接使用实现代码,实际上cpp混用的是obj-c编译后的o文件,这个东西其实是无差别的,所以可以用。而obj-c混用cpp就简单了,直接用就可以,因为obj-c的编译器支持啊
我自己也有一些总结,不过是在自己摸索良久之后得到的。后来看到网友的这篇文章,以前的摸索可以少走一些弯路了。
1)obj-c的编译器处理后缀为m的文件时,可以识别obj-c和c的代码,处理mm文件可以识别obj-c,c,c++代码,但cpp文件必须只能用c/c++代码,而且cpp文件include的头文件中,也不能出现obj-c的代码,因为cpp只是cpp
2) 在mm文件中混用cpp直接使用即可,所以obj-c混cpp不是问题
3)在cpp中混用obj-c其实就是使用obj-c编写的模块是我们想要的。
如果模块以类实现,那么要按照cpp class的标准写类的定义,头文件中不能出现obj-c的东西,包括#import cocoa的。实现文件中,即类的实现代码中可以使用obj-c的东西,可以import,只是后缀是mm。
如果模块以函数实现,那么头文件要按c的格式声明函数,实现文件中,c++函数内部可以用obj-c,但后缀还是mm或m。
总结:只要cpp文件和cpp include的文件中不包含obj-c的东西就可以用了,cpp混用obj-c的关键是使用接口,而不能直接使用实现代码,实际上cpp混用的是obj-c编译后的o文件,这个东西其实是无差别的,所以可以用。而obj-c混用cpp就简单了,直接用就可以,因为obj-c的编译器支持啊
相关文章推荐
- 关于c/c++/obj-c的混合使用 (2010-06-22 10:05:33)
- arm-linux-gcc/ld/objcopy/objdump使用总结[zz]
- 关于c/c++/obj-c的混合使用
- Android关于PagerAdapter的使用方法的总结
- 揭开Eclipse的面纱 (关于Ecliplse所以资源及使用指导,很好的总结)
- 关于typedef使用总结
- iOS关于Button使用的一些总结
- 关于php的array_diff和array_diff_assoc的使用总结
- arm-linux-gcc/ld/objcopy/objdump使用总结
- 关于Yaf框架的使用总结
- 彻底学会使用epoll(六)——关于ET的若干问题总结
- IntelliJ IDEA 使用总结[zz]
- 关于ASIHTTPRequest的使用总结
- IntelliJ IDEA 使用总结[zz]
- 【Android进阶】关于PagerAdapter的使用方法的总结
- 转载sql server 关于 default value的一些使用总结
- 关于宏#define使用陷阱总结
- Android混合开发之WebView使用总结
- 关于混合光谱分解新方法(文献总结)
- 关于使用百度地图的总结