【问题标题】:Is it possible to add "assert" as a keyword in Delphi?是否可以在 Delphi 中添加“assert”作为关键字?
【发布时间】:2010-04-02 17:17:11
【问题描述】:

我在代码中编写了几个“assert(...)”,以确保满足前置条件和后置条件。我们可以告诉 Delphi 编译器,在调试版本中是否使用断言进行编译,在发布版本中是否使用断言进行编译。

我想知道,是否可以像其他 Pascal 关键字一样突出显示“断言”?

【问题讨论】:

    标签: delphi ide assert keyword


    【解决方案1】:

    Assert,和很多其他看似“保留词”一样,其实就是所谓的“标准函数”

    Exit、Break、Continue 和 Assert 是编译器不保留的符号示例,而是作为符号存在于“系统”单元命名空间中。原因是 Delphi(或者更具体地说是 Turbo Pascal)最初没有 Exit、Break、Continue 或 Assert 的概念。许多现有用户可能已经将这些标识符用于他们自己的库。如果我们将这些标识符设为保留字,我们就会破坏许多现有的应用程序。通过将它们创建为“标准函数”并将它们“限定”到系统单元,我们可以提供添加的功能而不会破坏现有代码。在某些具有自己的 Exit 函数的库中,程序对该标识符的使用不会受到影响。但是,如果程序员明确想要使用 Exit 标准函数,您可以完全限定标识符,如“System.Exit”,编译器将生成代码以退出当前函数,而不是调用范围更近的 Exit。

    【讨论】:

    • 如果下一个 Delphi 可以在代码高亮方面增加更多的灵活性,也许会很棒。
    • 您解释了为什么 ASSERT() 不被 编译器 视为关键字,但这不是它以及类似的流控制语句不能被highlighter 将其作为单独的案例处理。 “是否可以将这些语句视为 if 它们是语法高亮显示的保留字”的简单答案是“是”,您可以非常容易地做到这一点。因此,您的答案是错误的,因为它将荧光笔的行为与编译器的行为混为一谈。
    • 语法高亮器对上下文不够敏感,无法知道特定标识符是 System.Exit 版本还是来自另一个更近范围的标识符。
    • -1 我对这个答案投了反对票,因为它没有回答问题是否可以突出显示该词但解释了为什么没有突出显示Assert
    【解决方案2】:

    其实断言不是保留字
    您可以创建自己的 Assert 过程或函数,即使不推荐,它也会编译。
    因此,Assert 无法突出显示。

    【讨论】:

      【解决方案3】:

      没有。 Delphi 的荧光笔不能这样配置。您可以配置关键字的颜色,但不能配置哪些字词算作关键字。

      如果您将此问题作为功能请求,请提交至 Embarcadero 的 Quality Central。 Stack Overflow 不适合这样做。

      由于您正在检查前置条件和后置条件,因此即使没有突出显示,您的断言也应该很容易找到:它们将是任何函数中的第一个和最后一个语句。

      【讨论】:

      • 我几年前就提交了这个请求。 QC 是此类事情的黑洞:QC # 20639。它被关闭为“已解决”并标记为重新测试,但似乎没有任何改变。 Emborcaderogearprise 想知道为什么人们不费心使用 QC....
      【解决方案4】:

      我总是在大写字母中键入退出函数以使其突出。你可以用 assert 做同样的尝试。

      【讨论】:

        【解决方案5】:

        我不这么认为。在Tools -> Options -> Editor Options -> Source Options 下,您可以打开或关闭语法突出显示,但我看不到任何选项可以让您定义要突出显示的语法。

        【讨论】:

          猜你喜欢
          • 2014-02-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-06-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多