Delphi函数名在Obj文件中的作用

时间:2015-11-07 17:56:11

标签: delphi delphi-7

Delphi在编译pas文件时所起的函数名称的作用是什么。

例如以下代码

unit Hellopas;
interface
function HelloFromPas():Integer; stdcall; 

将推出此函数名称@Hellopas @ HelloFromPas $ qqsv

那么Delphi的角色是什么?

1 个答案:

答案 0 :(得分:2)

这是一个装饰或受损的名称。该名称对函数及其参数的完整范围进行编码。包含单位名称,因为它是完全限定名称的一部分。参数,返回值和调用约定也被编码,此处为qqsv

Wikipedia解释了像这样修剪的必要性:

  

在编译器构造中,名称修改(也称为名称修饰)   是一种用于解决由需要引起的各种问题的技术   为许多现代的编程实体解析唯一的名称   编程语言。

     

它提供了一种以a的名称编码附加信息的方法   函数,结构,类或其他数据类型,以传递更多   从编译器到连接器的语义信息。

     

需要语言允许不同的实体   只要它们占用不同的名称,就用相同的标识符命名   namespace(命名空间通常由模块,类定义,   或显式命名空间指令)或具有不同的签名(例如   函数重载)。

     

编译器生成的任何目标代码通常都与其他代码链接   由一个目标代码(由相同或另一个编译器生成)   称为链接器的程序类型。链接器需要很多   每个计划实体的信息。例如,要正确链接一个   函数它需要它的名字,参数的数量和它们的类型,   等等。