const ,static,inline】的更多相关文章

const: 1 定义变量 ,如下写法都可以: TYPE const ValueName = value;                  const TYPE ValueName = value; 2 当作为全局变量并且在他文件也想使用时:(默认const具有局部性) 1.CPP  :extern const TYPE ValueName = value;定义 2.CPP:  extern const  TYPE ValueName; 外部声明 上面两个const 和TYPE可以颠倒. 3…
条款1 尽量用const和inline而不用#define >"尽量用编译器而不用预处理" Ex. #define ASPECT_R 1.653    编译器永远不会看到ASPECT_R这个符号名, 在源码进入编译器之前, 就被预处理程序去掉, ASPECT_R 不会被加入到符号列表中; 编译报错时, 报错信息指向1.653, 让程序员无法跟踪错误;(这个问题也会出现在符号调试器中); >Solution: 定义常量 const double ASPECT_R = 1.65…
换一种说法就是宁可以编译器替换预处理器 举例 #define ASPECT_RATIO 1.653 记号ASPECT_RATIO也许从未被编译器看见:也许在编译起开始处理源码前它就被预处理器移走了,于是它并没有进入符号表,当出现编译错误的时候会提示1.653,但是不会提示ASPECT_RATIO. 解决办法就是用一个常量替换宏(#define): const double AspectRatio = 1.653; 常量替换宏的两种特殊情况 1. 常量指针 常量定义通常被放在头文件内(以便被不同的…
#define ASPECT_RATIO 1.653 编译器会永远也看不到ASPECT_RATIO这个符号名,因为在源码进入编译器之前,它会被预处理程序去掉,于是ASPECT_RATIO不会加入到符号列表中.如果涉及到这个常量的代码在编译时报错,就会很令人费解,因为报错信息指的是1.653,而不是ASPECT_RATIO. 解决这个问题的方案很简单:不用预处理宏,定义一个常量: const double ASPECT_RATIO = 1.653; 另一个普遍的#define指令的用法是用它来实现…
##常规变量 c++里面的#define后面的定义部分,是不算代码的一部分的.所以如果你使用#define: #define ASPECT_RATIO 1.653 你希望这个代号ASPECT RATIO这个代号是能够被编译器加入到记号表(symbol table)里面,如果调试的时候,这个部分出现问题,能够很快的发现出来.但是很多时候我们的预处理器会把这个变量移除,只保留了一个1.653的常量,如果Debug的时候这个常量出现了错误,你是很难定位到自己需要修改代码的地方的,这就会造成我们在使用中…
const,static,extern 简介 一.const与宏的区别: const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量. 执行时刻:宏是预编译 ( 编译之前处理 ),const是编译阶段. 编译检查:宏不做检查,不会报编译错误,只是替换,const会编译检查,会报编译错误. 宏的好处:宏能定义一些函数,方法,const不能. 宏的坏处:使用大量宏,容易造成编译时间久,每次都需要重新替换. 注意:很多Blog都说使用宏,会消耗很多内存,我…
李洪强iOS经典面试题155 - const,static,extern详解(面试必备) 一.const与宏的区别(面试题): const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量. 执行时刻:宏是预编译(编译之前处理),const是编译阶段. 编译检查:宏不做检查,不会报编译错误,只是替换,const会编译检查,会报编译错误. 宏的好处:宏能定义一些函数,方法. const不能. 宏的坏处:使用大量宏,容易造成编译时间久,每次都需要重新替换.…
今天看到了这样一段代码, static inline BOOL IsEmpty(id thing) { return thing == nil || [thing isEqual:[NSNull null]] || ([thing respondsToSelector:@selector(length)] && [(NSData *)thing length] == ) || ([thing respondsToSelector:@selector(count)] && […
const, static and readonly http://tutorials.csharp-online.net/const,_static_and_readonly Within a class, const, static and readonly members are special in comparison to the other modifiers. [edit] const vs. readonly const and readonly perform a simil…
在查找const相关资料的过程中,又遇到了另外一个问题,就是C++类中const static(或者static const)成员变量应当如何初始化的问题. 查阅了许多资料,发现VC环境下,只允许const static成员变量在类外初始化,这个应该是编译器遗留下的bug(你也可以说是要求严格). 在其他编译器下,整型以及枚举类型的const static成员变量是允许在声明的同时进行初始的,其中整型包括int.short.long.char等,非整型是指浮点型 包括float.double等.…