{}参数引用到底是做什么的?

时间:2014-02-14 16:01:25

标签: progress-4gl openedge

我是一个有进步-4gl(OpenEdge)的新手,我遇到了一些代码,这些代码在我的生活中无法完全理解它的作用。下面是我试图剖析的代码示例以及我在情况中找到的所有材料。

我意识到我的回答是在材料中然而我不能真正理解它以及我想要的。希望有比我更多知识的人可以帮助我。感谢任何花在这上面的人:

Function functionName RETURNS CHAR ( integerName AS INT ) {1}:

此函数存储在包含文件中,并通过以下方式由不同的过程调用:

charName = GetCommSecType ( intName )

我不完全理解的是{1}存在的原因以及它到底在做什么。如果我不放{1}一切似乎都一样。我在帮助文件中查看了以下信息:

  

{}参数参考:
  引用过程传递给被调用的外部过程文件或包含文件的参数的值。   ABL将每个参数转换为字符格式。如果参数在RUN语句中指定为字符串常量或包含文件引用,则此转换将删除周围的双引号。   当从另一个过程调用一个过程并使用参数时,ABL重新编译被调用过程,替换调用过程传递的参数,然后运行被调用过程。

我认为这样做的目的是允许在命令行RUN命令上运行包含文件功能。如果我错了,请纠正我。感谢

1 个答案:

答案 0 :(得分:0)

{}是一种称为预处理器的东西,意味着它只会在编译期间而不是运行时影响程序的结果。

通常你会包含一个.i文件,而不是运行它,但这种语法可以用于运行和包含文件。

在这种情况下,它意味着编译器将插入写入{1}的内容。 {1}表示插入的第一个参数。您也可以为参数命名(请参阅下面的链接)。

简单包含这样的文件:

{filename.i}

在这种情况下,猜测插入的内容并不是很容易,但基本上如果你做了这样的包含:

DEFINE VARIABLE c AS CHARACTER   NO-UNDO.
c = "ABC".
{c:\temp\includetest.i c}

编译器将插入ABC,其中{1}写入您的包含文件。当然,在这个例子中没有任何意义。而且我现在还没有任何可以在参数和冒号之间写出的东西。

假设您的filname.i文件只包含。

DISPLAY {1}.

执行上面的include会使编译器用“ABC”替换{1},从而使语句看起来像这样:

DISPLAY c.

运行它会显示c的值 - “ABC”。

您必须提供正在运行的代码或包含您的文件,以便更好地理解这一点!

第{22>页及this document中的转发更深入地描述了这一点。