【问题标题】:Declaration vs. Prototype vs. Symbol vs. Definition vs. Implementation声明 vs. 原型 vs. 符号 vs. 定义 vs. 实现
【发布时间】:2011-05-01 22:36:35
【问题描述】:

当涉及到如下代码时,我经常看到术语“声明”、“原型”和“符号”可以互换使用:

void MyUndefinedFunction();

类似这样的事情的“定义”和“实现”也是如此:

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

术语之间是否有任何区别,例如“参数”和“参数”?还是它们真的是同义词?

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

【问题讨论】:

    标签: language-agnostic terminology


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      int foo();
      

      请注意,这不同于:

      int foo(void);
      

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

      【讨论】:

        猜你喜欢
        • 2011-12-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多