linyawen

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2012年5月2日

摘要: 转自http://www.cnblogs.com/biosli/archive/2011/04/30/Mixing_ObjectiveC_and_Cplusplus_in_iPhone_Development.html先说题外话,文章标题其实起的不好,在iOS的开发中,Apple建立的库基本都是用Objective-C写的,所以在这里的C++指的其实是Objective-C++。首先,最最最要紧的事情,不是代码而是编译器选项,在做混合编译之前一定要把编译器的Compile Sources As选项改为Objective C++。默认的选项是According to file type,用这个的 阅读全文
posted @ 2012-05-02 16:20 linyawen 阅读(2862) 评论(1) 推荐(0) 编辑

摘要: 宏定义(#define)的作用及使用方法属于C语言基础的范畴,本文不打算多做赘述,在此只是给出#define可能引起的或潜在的风险,希望对你有所帮助。 先看这个宏定义 1 #define MAX(A, B) (A > B ? A : B) 这个宏做一个加法的运算,你觉得它有什么问题吗??看看如下的调用会发生什么情况 1 int a = MAX(2, 1) + 3; 这里就有情况了,由于运算符的优先顺序不同,那么这里并不能得到我们期望的值。好的,我们可以这样解决 1 #define MAX(A, B) (A > B ? A : B) // 加个括号来预防上面的问题 好,上面的问题现. 阅读全文
posted @ 2012-05-02 15:37 linyawen 阅读(314) 评论(0) 推荐(0) 编辑

摘要: 转自http://www.cnblogs.com/yc_sunniwell/archive/2010/07/14/1777431.html1基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。 也就是说extern有两个作用,第一个,当它与"C"一起连用时,如: extern "C" void fun(int a, int b);则告诉编译器在编译fun这个函数名时按着C的规则去翻译相应的函数名而不是C++的,C++的规则在翻译这个函 阅读全文
posted @ 2012-05-02 15:32 linyawen 阅读(231) 评论(0) 推荐(0) 编辑

摘要: C风格的强制类型转换(Type Cast)很简单,不管什么类型的转换统统是: C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。 const_cast,字面上理解就是去const属性。 static_cast,命名上理解是静态类型转换。如int转换成char。 dynamic_cast,命名上理解是动态类型转换。如子类和父类之间的多态类型转换。 reinterpreter_cast,仅仅重新解释类型,但没有进行二进制的转换。 4种类型转换的格式,如: const_cast 类似于C风格的强制转换。无条件转换,静态类型转换。用于: 1. 基类和子类之间转换:其中... 阅读全文
posted @ 2012-05-02 09:28 linyawen 阅读(328) 评论(0) 推荐(0) 编辑