【问题标题】:How PHP macro define is interpreted?PHP 宏定义是如何解释的?
【发布时间】:2011-07-02 07:48:06
【问题描述】:

对于 C/C++,我认为预处理器会在编译器编译程序之前进行宏处理,这就是为什么宏名称必须是字面量或绝对值,不允许声明宏名称的变量。

对于 PHP,我们可以这样声明:DEFINE($name, $value); 这意味着解释器首先解释变量然后定义宏,即类似于运行时宏处理。

这实际上让人怀疑,这真的是宏处理吗? 如果不是,那么引入像'define'这样的关键字的目的是什么?有不能改变的值?

或者如果有宏处理,那么任何人都可以解释一下,它是如何工作的?

【问题讨论】:

    标签: php macros c-preprocessor


    【解决方案1】:

    为了完整起见,有一个在编译时定义的常量:

    const MY_CONSTANT = 'something';
    

    与使用 define() 定义常量相反,使用 const 关键字定义的常量必须在顶级范围内声明,因为它们是在编译时定义的。这意味着它们不能在函数、循环或 if 语句中声明。

    From the PHP Manual.

    这是针对当前 PHP 版本 5.3。

    【讨论】:

    • 实际上我混淆了 const 和 define 并假设 define 会像 C 宏一样工作。无论如何,谢谢你的链接;)。
    【解决方案2】:

    Define() 声明一个常量。在 PHP 中,您不能像在 C 中那样声明宏,通常也不需要。

    欲了解更多信息,请尝试优秀的php website

    【讨论】:

      【解决方案3】:

      PHP 是一种解释性语言——我们不能在 PHP 的情况下谈论编译。 DEFINE 用于定义常量 - 例如PI

      【讨论】:

      【解决方案4】:

      http://php.net/manual/en/function.define.php

      在运行时定义一个命名常量。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-11
        • 1970-01-01
        • 1970-01-01
        • 2014-12-30
        • 2018-06-14
        • 1970-01-01
        相关资源
        最近更新 更多