声明一个没有内容的函数;-然后是内容{}- c++



我不确定术语,所以我不知道如何表达我的标题;如果有人想用正确的术语来编辑它,那就好了。

当我写代码时,我总是按时间顺序写。我把主槽放在底部,然后向上。然而,我最近读了一个教程,做了一些我以前从未见过的事情。

在include之后的顶部,程序员写道:

void inccell(int pos, int width, unsigned char *board);
void deccell(int pos, int width, unsigned char *board);

我以前没见过这个;我总是用void myfunction (args) { stuff }。我还没有在;的情况下见过它。在此之后,在程序的后面,他定义了函数的内容:

void inccell(int pos, int width, unsigned char *board)
{
    ++board[(pos-width)-1];
    ++board[ pos-width   ];
    ++board[ pos-width +1];
    ++board[ pos-1       ];
    ++board[ pos+1       ];
    ++board[(pos+width)-1];
    ++board[ pos+width   ];
    ++board[ pos+width+1 ];
    return;
}
void deccell(int pos, int width, unsigned char *board)
{
    --board[(pos-width)-1];
    --board[ pos-width   ];
    --board[ pos-width +1];
    --board[ pos-1       ];
    --board[ pos+1       ];
    --board[(pos+width)-1];
    --board[ pos+width   ];
    --board[ pos+width+1 ];
    return;
}

;{ }函数的参数是相同的,所以据我所知它不是"过载";我相信重载是用来调用一个函数的不同的参数集,即myfunc(myint, mystr, mybool)myfunc(myint, mystr)都可以是有效的。

我可能错了。

然而,谁能给我解释一下为什么他在顶部声明函数,如果他没有重载,它的目的是什么?

谢谢。

这些是函数声明。它们只是告诉编译器这些函数的存在和签名,这样它们的定义就可以出现在调用点之后:

void foo(); // DECLARATION
int main()
{
    foo(); // CALL (would be illegal without the declaration, because the compiler
           //       wouldn't know about foo(), since it hasn't met its definition yet)
}
#include <iostream>
void foo() // DEFINITION
{ 
    std::cout << "Hello, world!"; 
}

首先是声明函数,然后定义它。

当函数在定义之前使用时,需要前向声明。(强制)

如果函数在顶部定义,则不需要声明函数。

用于编译器检查参数的数据类型是否匹配,填充调用函数的地址(BACKPATHCHING)…

相关内容

最新更新