首页
学习
活动
专区
圈层
工具
发布

PHP中定义常量的区别,define() 与 const

正文 在PHP5.3中,有两种方法可以定义常量: 使用const关键字 使用define()方法 const FOO = 'BAR'; define('FOO','BAR'); 这两种方式的根本区别在于...const默认在当前的namespace下定义常量,而使用define则需要你写明整个namespace的完整路径: namespace A\B\C; // 如果要定义常量 A\B\C\FOO: const...FOO = 'BAR'; define('A\B\C\FOO', 'BAR'); 自从PHP5.6后,使用const数组也能被定义为常量。...尤其是在使用define定义大量常量时,PHP的运行速度会变得非常慢。...{ const BAR = 2; // 有效 } class Baz { define('QUX', 2); // 无效 } 总结 除非你需要使用表达式或者在条件语句中定义常量,不然的话仅仅是为了代码的简单可读性你都最好要使用

1.6K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    #define 定义常量 与 定义 宏

    注意:在使用#define时有个不成文的规定,名字一般都为大写 2....#define 定 义 宏 规则:#define定义机制允许把参数也替换到文本中 比如: #define SQU(x) x*x 注意:参数的左括号需与名紧密相接,不能有空号。...编译器处理后变成了int b = 10 * (5)+(5); 改为#define ADD(x) ((x)+(x))这样定义即可。 作者建议在定义宏时不 要 吝 惜 括号“()”。...1.宏对比函数的优点 1.所耗时间少:若使用函数实现上述代码,则函数的调用、参数的传递、函数的返回所用的时间是大于用宏实现该段代码的,毕竟使用宏时编译系统是直接把代码“复制粘贴”在原处。...所以宏在 2.无需重复定义函数:函数参数的类型决定了该函数的使用范围,若形参为int型,则float型数据就无法使用该函数,,而使用宏是与参数类型无关的,没有这种顾虑。

    21800

    【C语言】什么是宏定义?(#define详解)

    注意,可以在#define行使用标准C注释.每条注释在预处理后都会被一个空格代替....ROW 5 #define COL 5 int main() { int arr[ROW][COL];//使用宏定义创建一个二维数组 return 0; } 最后,如果数字是系统代码...(结构体对齐)) 我们在vs2022中测试一下该宏: 我们接下来使用宏定义模仿实现一下这个库宏: #include #define MY_OFFSETOF(type,member...即便使用宏定义看似简便,高效,但宏定义中同样存在一些陷阱,接下来我们将会以三目运算符求两个数中的较小值为例,向大家展示宏定义中可能一不小心就被大家忽略的陷阱: 小白写法 #define MIN...下表列出了一些关于#define定义宏和函数的区别: 属 性 #define定义宏 函数 代 码 长 度 每次使用时,宏代码都会被插入到程序中。

    1.4K10

    C语言宏定义(#define定义常量​、#define定义宏​、 带有副作用的宏参数、 宏替换的规则、 宏函数的对比)

    一、#define的基本语法 在C语言中,常量是使用频率很高的一个量。常量是指在程序运行过程中,其值不能被改变的量。常量常使用#define来定义。...使用#define定义的常量也称为符号常量,可以提高程序的运行效率。...三、#define定义常量用法 ①宏常量   我们最常使用到的#define的用法就是用#define来定义一个符号常量,而要修改时,只需修改#define这条语句就行了,不必每处代码都修改 基本语法...a + 1) ); 这里还有一个宏定义: #define DOUBLE(x) (x) + (x) 定义中我们使用了括号,想避免之前的问题,但是这个宏可能会出现新的错误。...#define DOUBLE( x) ( ( x ) + ( x ) ) 提示: 所以用于对数值表达式进行求值的宏定义都应该用这种方式加上括号,避免在使用宏时由于参数中的操作符或邻近操作符之间不可预料的相互作用

    3.6K11

    #ifndef#define#endif使用详解

    想必很多人都看过“头文件中的 #ifndef/#define/#endif 防止该头文件被重复引用”。但是是否能理解“被重复引用”是什么意思?...是不能在不同的两个文件中使用include来包含这个头文件吗?如果头文件被重复引用了,会产生什么后果?是不是所有的头文件中都要加入#ifndef/#define/#endif 这些代码?...有些头文件重复包含,会引起错误,比如在头文件中定义了全局变量(虽然这种方式不被推荐,但确实是C规范允许的)这种会引起重复定义。...是不是所有的头文件中都要加入#ifndef/#define/#endif 这些代码?...下面给一个#ifndef/#define/#endif的格式: #ifndef A_H意思是"if not define a.h" 如果不存在a.h 接着的语句应该#define A_H 就引入

    1.3K30

    CC++中define定义的常量与const常量

    常量是在程序中不能更改的量,在C/C++中有两种方式定义常量,一种是利用define宏定义的方式,一种是C++中新提出来的const型常变量,下面主要讨论它们之间的相关问题; define定义的常量:...而我们看到在使用const 定义的时候并没有这个替换的操作,与使用正常的变量无异。...而我们看到在使用const 定义的时候并没有这个替换的操作,与使用正常的变量无异。...2)define定义的常量编译器不会进行任何检查,const定义的常量编译器会进行类型检查,相对来说比define更安全 3)define的宏在使用时是替换不占内存,而const则是一个变量,占内存空间...5)define定义的宏在编译前的预处理操作时进行替换,而const定义变量是在编译时决定 6)define定义的宏是真实的常量,不会被修改,const定义的实际上是一个变量,可以通过相关的手段进行修改

    2.2K10

    如何正确使用const(常量),define(宏)

    前言 在开发中,也许我们会经常使用到宏定义,或者用const修饰一些数据类型,经常有开发者不知道怎么正确使用,导致项目中乱用宏定义与const修饰符。...本篇主要介绍在开发中怎么正确使用const与define(宏定义) 当我们想定义全局共用的一些数据时,比如通知名字,动画时长等等,我们可以用宏、常量、变量: 宏: // 注意后面不需要带符号...甚至有相同后缀的字符串也可以优化,你可以使用GCC编译测试,Hello world与world两个字符串,只存储前面一个。...define在预处理阶段进行替换,const常量在编译阶段使用; define不做类型检查,只进行替换,const常量有数据类型,会执行类型检查; define不能调试,const常量可以调试; define...定义的常量在替换后运行过程中,会不断占用内存,而const定义的常量存储在数据段,只有一份拷贝,效率更高; define可以定义函数,const不可以。

    2.7K70

    如何正确使用const(常量),define(宏)

    前言 在开发中,也许我们会经常使用到宏定义,或者用const修饰一些数据类型,经常有开发者不知道怎么正确使用,导致项目中乱用宏定义与const修饰符。...本篇主要介绍在开发中怎么正确使用const与define(宏定义) 当我们想定义全局共用的一些数据时,比如通知名字,动画时长等等,我们可以用宏、常量、变量: 宏: // 注意后面不需要带符号...甚至有相同后缀的字符串也可以优化,你可以使用GCC编译测试,Hello world与world两个字符串,只存储前面一个。...define在预处理阶段进行替换,const常量在编译阶段使用; define不做类型检查,只进行替换,const常量有数据类型,会执行类型检查; define不能调试,const常量可以调试; define...定义的常量在替换后运行过程中,会不断占用内存,而const定义的常量存储在数据段,只有一份拷贝,效率更高; define可以定义函数,const不可以。

    1.1K20

    CC++中----->#define定义函数和自定义函数各方面比较

    #define定义函数和自定义函数各方面比较 代码长度 #define宏:每次使用时,宏代码都被插入到程序中。...除了非常小的宏之外,程序的长度将大幅度增长 函数:函数代码只出现于一个地方:每次使用这个函数时,都调用那个地方的同一份代码 执行速度 #define宏:更快 函数: 存在函数调用、返回的额外开销 操作符优先级...参数求值 #define宏:参数用于宏定义时,每次都将重新求值,由于多次求值,具有副作用的参数可能会产生不可预测的结果。...参数类型 #define宏:宏与类型无关,只要参数的操作是合法的,它可以用于任何参数类型。 函数: 函数的参数是与类型有关系的,如果参数的类型不同,就需要使用不同的函数,即使它们执行的任务是相同的。...总的来说#define定义函数优缺点如下: 优点:可完成函数调用的功能,对输入参数没有限制,又能减少系统开销,提高运行效率。因为它是在预处理阶段即进行了宏展开,在执行时不需要转换,即在当地执行。

    1.7K20

    【C语言预处理详解(上)】--预定义符号,#define定义常量,#define定义宏,带有副作用的宏参数,宏替换的规则,宏和函数的对比

    一.预定义符号 --C语言中设置了一些预定义符号,可以直接使用,预定义符号也是在预处理期间处理的。 1. __FILE__ // 进行编译的源文件 2....__STDC__ // 如果编译器遵循 ANSI C ,其值为 1 ,否则未定义 --我们来使用一下这些预定义符号,观察它们打印出来的结果 #include int main...#define定义宏 3.1--定义宏的方法和注意事项 --#define机制包括一个规定,允许将参数替换到文本中,这种实现通常称为宏(macro)或定义宏(define macro)。...但是呢,这样还不能完全解决所有问题,我们再来看看下面这个宏定义: # define DOUBLE(x) (x) + (x) 这里我们可以看到定义中我们使用了括号,想避免之前出现的问题,但是这个宏可能会出现新的错误...宏可能会带来运算符优先级的问题,导致程容易出现错,(比如上面的自增++) 宏和函数的对比关系表: 属性 #define定义宏 函数 代码长度 每次使用时,宏代码都会被插入到程序中。

    18410

    C语言带参数的宏定义:#define f(X) ((X)*(X))

    在以上知识点总结7里面,有很多同学对宏定义的理解还不是很透彻,今天以一个例题深入分析一下。没复习到的同学可以查看上面链接先熟悉一下。 首先,什么是宏定义?...2.知识点:不带参数的宏定义l 一般形式:#define 宏名 字符串(或数值)即用字符串或数值取代宏名。l 宏名一般采用大写字母表示,以与变量名区别,也可用小写字母。...l 宏定义可以嵌套使用,例如:#define R 3.0#define PI 3.14159#define L 2*PI*R 3.知识点:带参数的宏定义l 一般形式:#define 宏名(参数表)...+1); 我们在宏定义的时候尽量就避免这个问题,使用带参数的宏时,要注意参数要带上括号,最好整个宏也要带上括号: #define f(X) ((X)*(X)) 否则,容易误导别人的同时,自己也容易出错...实际编程中,这种问题遇到的很少,一般都使用函数代替,不会有这种问题,考试时候遇到的话,只能直接带进去看了。----本公众号资源在QQ群文件群共享也可下载。

    5.9K00
    领券