#define 和 const】的更多相关文章

这里介绍一下define.const.extern的用法.优劣以及要注意的地方. 1.define 宏define是定义一个变量,没有类型信息.define定义的常量在内存中有若干个拷贝. define可以定义常量,但是建议不要这么做,因为用define定以了的常量,其值可以改变. 用define定义方法和变量的例子: #define MAX(a,b) (a>b)?a:b #define MYVALUE 10 2.const const修饰的变量是不可变的. const定义常量从汇编的角度来看,…
面试常问:宏#define和const有什么区别? 1.编译器处理方式 define宏是在预处理阶段展开 const常量是在编译阶段使用 2.类型和安全检查不同 define宏没有类型,不做安全检查,是简单的替换 const常量有具体的类型,在编译阶段会这行类型检查 3.存储方式不同 define宏是展开不分配内存 const常量分配内存空间(堆栈可以) 4.const从汇编角度讲,只是给出对应的内存地址,而不是像#define一样给出的是立即数,所以const常量在程序运行过程中只有一份拷贝,…
我们通常把不经常变的值定义成常量,常量一般用全部大写来表示,前面不加美元符号,也可减少团队开发的出错.那么define和const有什么区别呢? 1.const是一个语言结构:而define是一个函数,可以通过第三个参数来指定是否区分大小写.true表示大小写不敏感,默认为false define('PI', 3.14, true); 2.const简单易读,编译时要比define快很多. 3.const可在类中使用,用于类成员常量定义,定义后不可修改:define不能在类中使用,可用于全局变量…
define和const都可以用来定义常量,define的格式为:#define 标识符 字符串,const在定义常量前面,const类型定以后不能被修改,区别主要有如下几点: 1.编译器处理方式不同 define是在预处理时进行展开,在编译时会将其全部替换,const在编译运行使使用 2.存储方式不同 define是直接替代,因此不占用内存,在代码段存储,而const常量会占用内存,在数据段存储 3.类型不同 define没有类型,编译时不会做任何编译检查,const必须制定类型,编译器会进行…
在iOS开发中经常遇到一些字段和类型的定义,例如配置生产和测试不同环境的参数等,这时候经常用到#define.const以及typedef.那么它们之间有什么区别呢?我们接下来一个一个具体了解下. 一.基本概念 1.1.#define #define并不是定义全局变量,而是宏定义.也就是说并不是真正意义上的定义变量,而是用来做文本替换.当程序开始运行时,编译器会先将代码中的MAX全部替换为100,然后再进行编译.由此可得,#define并不是在编译过程中进行,而是在预编译阶段进行. #defin…
我们经常把不经常变的值定义成常量,常量一般用全部大写来表示,前面不加美元符号,那么define和const有什么区别呢? 常量是一个简单的标识符.在脚本执行期间该值不能改变(除了所谓的魔术常量,他们其实不是常量).常量默认大小写敏感.通常常量标识符总是大写的. 可以用define()函数来定义常量.在php5.3.0以后,可以使用const关键字在类定义的外部定义常量,php7可以定义数组常量了,先前版本const关键字只能在类(class)中使用.一个常量一旦被定义,就不能再改变或取消定义.…
1.typedef和#define的区别 typedef int* pInt; , b = ; const pInt p1 = &a; //p1是常量指针 pInt const p2 = &b; //p2是常量指针 //这里的const就是拿来修饰p1.p2的,跟pInt没关系 1)作用:typedef定义了一个新的类型别名,而#define(宏定义)只是简单的替换 2)类型安全检查:用typedef定义时有类型安全检查,而#define是简单的替换,没有类型安全检查(所以容易出错) 3)…
使用 define(),除非考虑到可读性.类常量.或关注微优化 1.在 PHP 中是使用 define() 函数来定义常量,PHP 5.3.0 以后,PHP 中也能够使用 const 关键字来声明常量了,一个常量一旦被定义,就不能再改变或者取消定义 2.常量只能包含标量数据(boolean,integer,float 和 string).可以定义 resource 常量,但应尽量避免,因为会造成不可预料的结果 3.可以简单的通过指定其名字来取得常量的值,与变量不同,不应该在常量前面加上 $ 符号…
define和const都可以用来定义常量,但是const定义常量的时候大小写敏感,而define可以通过设置第三个参数为true的时候来取消大小写敏感! 如图: 引用地址:点这里…
#define.const.typedef的区别 #define 并不是定义变量, 只是用来做文本替换 例如: #define PI 3.1415926 float angel; angel=30*PI/180; 那么,当程序进行编译的时候,编译器会首先将 “#define PI 3.1415926”以后的,所有代码中的“Pi”全部换成 “3.1415926” 然后再进行编译. 我查到一个讲const与#define的差别的帖子,里面谈到const与#define最大的差别在于:前者在堆栈分配了…
下面使用#define和const定义常量: #define n_define 10 int main(int argc, char* argv[],int _version) { ; int *p=(int *)&n_const; *p=; printf("%d",*p); printf("\n%d",n_define); ; } 上述代码所对应的汇编代码如下: mov [ebp+var_4], 14h ;n_const的十六进制 lea eax, [eb…
在PHP中可以通过define()和const两种方式定义常量可是在开发中我们应该什么时候用define()定义常量,什么时候用const定义常量? 这两种方式定义常量的主要区别是什么? 从5.3版本开始PHP有两种方法来定义常量,使用const关键字或者是使用define()方法: const FOO = 'BAR'; define('FOO', 'BAR'); 两者之间最大的区别在于const是在编译时定义常量,而define()方法是在运行时定义常量. const不能用在if语句中, de…
  正文 在PHP5.3中,有两种方法可以定义常量: 使用const关键字 使用define()方法 const FOO = 'BAR'; define('FOO','BAR'); 这两种方式的根本区别在于const会在代码编译时定义一个常量,而define则是在代码运行时才定义一个常量.这就使得const会有以下几个缺点: const不能在条件语句中使用.如果要定义一个全局变量,const必须要处于整个代码的最外层: if (...) { const FOO = 'BAR'; // 无效的 }…
这个区别用从几个角度来说: 角度1:就定义常量说的话:const 定义的常数是变量 也带类型, #define 定义的只是个常数 不带类型. 角度2:就起作用的阶段而言:define是在编译的预处理阶段起作用,而const是在 编译.运行的时候起作用. 角度3:就起作用的方式而言:define只是简单的字符串替换,没有类型检查.而const有对应的数据类型,是要进行判断的,可以避免一些低级的错误.正因为define只是简单的字符串替换会导致边界效应,具体举例可以参考下面代码: #define N…
来源参考:https://blog.csdn.net/yi_ming_he/article/details/70405364 这个区别用从几个角度来说: 角度1: 就定义常量说的话:  const 定义的常数是变量 也带类型, #define 定义的只是个常数 不带类型. 角度2: 就起作用的阶段而言: define是在编译的预处理阶段起作用,而const是在 编译.运行的时候起作用. 角度3: 就起作用的方式而言: define只是简单的字符串替换,没有类型检查.而const有对应的数据类型,…
常量是一个简单值的标识符(名字).如同其名称所暗示的,在脚本执行期间该值不能改变(除了所谓的魔术常量,它们其实不是常量).常量默认为大小写敏感.通常常量标识符总是大写的. 可以用 define() 函数来定义常量.在 PHP 5.3.0 以后,可以使用 const 关键字在类定义的外部定义常量,先前版本const 关键字只能在类(class)中使用.一个常量一旦被定义,就不能再改变或者取消定义. 常量只能包含标量数据(boolean,integer,float 和 string). 可以定义 r…
自 PHP 5.3.0 起,有两种方式定义常量,使用 const 关键字或者 define() 函数:   1 2 const FOO = 'BAR'; define('FOO', 'BAR'); 这两种方式最根本的区别在于 const 在编译时定义,而 define 在运行时定义. 一.const 不能在条件语句中使用,使用 const 关键字定义常量必须处于最顶端的作用区域:   1 2 3 4 5 6 7 if (...) {     const FOO = 'BAR';    // 错误…
[#define] #define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查. [typedef] typedef只是为了增加可读性而为标识符另起的新名称 在自己的作用域内给一个已经存在的类型一个别名.  C++ Code  12345   typedef int *int_ptr; #define INT_PTR int* int_ptr a, b; // int *a,*b; INT_PTR a, b; // int *a,b; [const]  C++ Code  1234…
const const最好理解,修饰的东西不能被修改 指针类型根据位置的不同可以理解成3种情况: I 常量指针 // 初始化之后不能赋值,指向的对象可以是任意对象,对象可变. NSString * const pt1; II 指向常量的指针 // 初始化之后可以赋值,即指向别的常量,指针本身的值可以修改,指向的值不能修改 const NSString * pt2; III 指向常量的常量指针 const NSString *  const pt3; extern 等同于c,全局变量的定义, //…
一.const PHP5.3以前,const只能在类内部声明变量,5.3+允许在外部声明变量,但还不能使用常量计算! const ONE = 1; const WORD = 'hello world'; PHP5.6开始,const支持包括数值.字符串字面量以及其他常量在内的数值表达式,进行常量定义.并且更重要的是const开始支持定义常量数组! const ONE = 1; const TWO = ONE * 2; const ARR = ['a', 'b']; 需要注意的是const并不支持…
1.通过define定义的常量,在C语言里面一般叫宏定义.define的本质是简单的文本替换. 2.const定义一个变量,但是这个变量的值只能在定义的时候赋予,之后就不能被更改了. 如果变量声明中带有关键字const,则不能通过赋值,增量或减量来修改变量的值. 一个位于*左边任意位置const使得数据成为常量,而一个位于*右边的const使得指针自身成为常量. 3.(1) 编译器处理方式不同 define宏是在预处理阶段展开. const常量是编译运行阶段使用. (2) 类型和安全检查不同 d…
1.使用const使得代码简单易读,const本身就是一个语言结构,而define是一个函数2.const用于类成员变量的定义,一经定义,不可修改.3.Define不可以用于类成员变量的定义,可用于全局常量.例如定义配置...4.define() 允许你在常量名和常量值中使用表达式,而 const 则都不允许. 这使得 define() 更加灵活.5.Const不能再条件语句中定义常量6.define() 在执行期定义常量,而 const 在编译期定义常量.这样 const 就有轻微的速度优势…
    其实按照现在主流的观点,应该尽量少用全局变量和define,尽量多用临时变量,并且用const替换值define,用短小精悍的函数替换函数define.     对这些我倒是也没有什么意见,只是觉得有些东西存在就是存在,也是非常有道理的.比如define好了,虽然没有类型检查,也很难插错,连搜索reference都找不到东西在哪里.     但是它对系统没有性能消耗,C语言又没有inline函数,也没有lambda表达式.如果不用define的话,函数就一定会有调用开销,这种开销看上去似…
define篇 1.#define 的作用 在C或C++语言源程序中允许用一个标识符来表示一个字符串,称为“宏”. 被定义为“宏”的标识符称为“宏名”. 在编译预处理时,对程序中所有出现的“宏名”,都用宏定义中的字符串去代换,这称为“宏代换”或“宏展开”. 宏定义是由源程序中的宏定义命令完成的. 宏代换是由预处理程序自动完成的. 在C或C++语言中,“宏”分为有参数和无参数两种. 2. 无参宏定义 无参宏的宏名后不带参数. 其定义的一般形式为: #define 标识符 字符串 其中的“#”表示这…
In one word, using const is better than define. enum is the best. There are lots of discussions. I put a great paper below. https://betterembsw.blogspot.com/2017/05/define-vs-const.html The compiler might generate storage for a constant object, even…
const 与define 两者都可以用来定义常量,但是const定义时,定义了常量的类型,所以更精确一些.#define只是简单的文本替换,除了可以定义常量外,还可以用来定义一些简单的函数,有点类似内联函数(Inline).const和define定义的常量可以放在头文件里面. CONST用法 1. 用于指针的两种情况: const是一个左结合的类型修饰符. int const *A; //A可变,*A不可变 int *const A; //A不可变,*A可变 2.限定函数的传递值参数: vo…
C++中不但可以用define定义常量还可以用const定义常量,它们的区别如下: 用#define MAX 255定义的常量是没有类型的,所给出的是一个立即数,编译器只是把所定义的常量值与所定义的常量的名字联系起来,define所定义的宏变量在预处理的时候进行替换,在程序中使用到该常量的地方都要进行拷贝替换: 用const float MAX = 255; 定义的常量有类型名字,存放在内存的静态区域中,在程序运行过程中const变量只有一个拷贝,而#define 所定义的宏变量却有多个拷贝,所…
简要归纳PHP中两个常量定义关键字的区别: 1.define是函数,const是语言结构,PHP编译时const速度快.2.define只能用在类外,const类内类外皆可.3.define定义的常量是全局的,const定义的常量受命名空间限制.4.define可用在条件语句中,const不能.5.define可用表达式作为名称,const只可采用普通常量名称.6.const只能接受静态的标量,而define可以采用任何表达式.7.const定义的常量时大小写敏感,而define可以通过第三个参…
C++中不但可以用define定义常量还可以用const定义常量,它们的区别如下: 用#define MAX 255定义的常量是没有类型的,所给出的是一个立即数,编译器只是把所定义的常量值与所定义的常量的名字联系起来,define所定义的宏变量在预处理的时候进行替换,在程序中使用到该常量的地方都要进行拷贝替换: 用const float MAX = 255; 定义的常量有类型名字,存放在内存的静态区域中,在程序运行过程中const变量只有一个拷贝,而#define 所定义的宏变量却有多个拷贝,所…
define在预处理阶段进行替换,const常量在编译阶段使用 宏不做类型检查,仅仅进行替换,const常量有数据类型,会执行类型检查 define不能调试,const常量可以调试 define定义的常量在替换后运行过程中会不断地占用内存,而const定义的常量存储在数据段只有一份copy,效率更高 define可以定义一些简单的函数,const不可以…