声明与原型与符号与定义与实现

时间:2011-05-01 22:36:36

标签: language-agnostic terminology

在以下代码中,我看到“声明”,“原型”和“符号”这两个术语可以互换。

void MyUndefinedFunction();

对于这样的事情,“定义”和“实现”也是如此:

void MyClass::MyMethod()
{
    // Actual code here.
}

术语之间是否有任何区别,如“参数”和“参数?”或者他们真的是同义词吗?

注意:我不确定这是属于这里还是属于程序员,所以我posted it on both sites.如果有人有任何异议,请告诉我,我会删除一个。

2 个答案:

答案 0 :(得分:1)

除非你遇到一个纯粹主义者,否则它们通常是可互换的,除了符号和原型(难以在上给出绝对值)

  • 符号通常是指将2位代码链接在一起的挂钩点,例如库入口点或用于解析静态链接的目标
  • prototype 通常是指函数/方法的定义(参数,返回类型,名称,各种类型的可见性),但不包括实现。

你错过了函数与方法,但我的定义是:

  • 功能未绑定到对象的可调用代码
  • 方法对象命名空间中可调用的代码位。通常由编译器实现为将对象实例作为其第一个参数的函数。

可能是限制范围的参数提示,因此只读。

注意如果你问一个纯粹主义者,你更有可能拥有参数而不是参数

答案 1 :(得分:1)

声明和原型之间的区别主要在于C,其中以下是非原型声明:

int foo();

请注意,这与:

不同
int foo(void);

后者是不带参数的函数的原型,而前者是函数的声明,其声明类型未在声明中指定。这实际上可以用来避免函数指针类型转换与某些函数指针的使用,但它很容易搞砸,搞乱它会调用未定义的行为。许多C程序员认为非原型声​​明有害,而gcc有一个警告选项来标记它们。