Language agnostic 声明vs.原型vs.符号vs.定义vs.实现

Language agnostic 声明vs.原型vs.符号vs.定义vs.实现,language-agnostic,terminology,Language Agnostic,Terminology,当涉及到如下代码时,我看到术语“声明”、“原型”和“符号”经常交替出现: void MyUndefinedFunction(); 对于这类事情的“定义”和“实现”也是如此: void MyClass::MyMethod() { // Actual code here. } “参数”和“参数”这两个术语之间有什么区别吗?或者它们真的是同义词吗 注意:我不确定这是属于这里还是属于程序员,所以如果有人有任何反对意见,请告诉我,我会删除一个。除非你遇到纯粹主义者,否则它们通常是可以互换的,除

当涉及到如下代码时,我看到术语“声明”、“原型”和“符号”经常交替出现:

void MyUndefinedFunction();
对于这类事情的“定义”和“实现”也是如此:

void MyClass::MyMethod()
{
    // Actual code here.
}
“参数”和“参数”这两个术语之间有什么区别吗?或者它们真的是同义词吗


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

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

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

  • 函数未绑定到对象的可调用代码位
  • 方法对象命名空间中可调用的代码位。通常由编译器作为函数实现,该函数将对象实例作为其第一个参数
参数可能提示限制范围,因此为只读


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

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

int foo();
请注意,这不同于:

int foo(void);
后者是不带参数的函数的原型,而前者是声明中未指定参数类型的函数的声明。这实际上有助于避免函数指针的特定用途的函数指针类型转换,但很容易搞乱,搞乱它会调用未定义的行为。许多C程序员认为非原型声明是有害的,GCC有一个警告选项来标记它们。