首页 > 在C语言中声明和定义有什么区别?

在C语言中声明和定义有什么区别?

如问题所述,我对声明和定义的概念理解的相当混乱。


声明就是通告一声:嘿,存在这么个玩意;
定义则是告诉编译器这玩意具体长什么样;
参考如下代码:

void a();//告诉编译器,存在一个叫做a的函数
void b()//这里b的写法,就是把声明和定义合在一起了
{
    a();//虽然不知道a到底是啥,但反正它声明过了,知道确实存在这么个函数,那就继续编译下去吧
}
void a()//既然声明了总归要定义的,给编译器的承诺不能落空啊
{
    puts("A");
}

或者考虑这样的情况,有两个文件a.cppb.cpp,它俩要分别编译后最终链接在一起:

//b.cpp
extern int i;//告诉编译器一声,有个整数i存在
void a();//告诉编译器一声,有个函数a存在

void b()
{
    a();//既然已经告诉过我a存在了,那就继续编译下去吧
    i++;//既然已经告诉过我i存在了,那就继续编译下去吧
}
//a.cpp
int i;//补全i的定义,否则在最后链接时,i被声明却不定义,链接器将报错
void a(){}//补全a的定义

嘿嘿,这里有个msdn的链接,你可以看看哦。https://msdn.microsoft.com/zh...

【热门文章】
【热门文章】