首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带extern和不带extern的函数声明的区别

带extern和不带extern的函数声明的区别
EN

Stack Overflow用户
提问于 2011-10-23 22:07:06
回答 2查看 763关注 0票数 4

有这样的代码:

代码语言:javascript
复制
#include <iostream>

extern void fun();

int main(){
    fun();
    return 0;
}

void fun(){ std::cout << "Hello" << std::endl; }

声明之间有没有什么区别:

代码语言:javascript
复制
extern void fun();
void fun();

?上面的代码在使用extern和不使用extern关键字时的行为是相同的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-23 22:14:16

默认情况下,函数声明确实有,因此将extern关键字添加到函数声明没有任何区别,这是多余的。

票数 8
EN

Stack Overflow用户

发布于 2011-10-23 22:20:20

这两个语句之间的区别是:

代码语言:javascript
复制
extern void fun();

告诉编译器和链接器在这个文件中的代码引用fun( )时查看另一个文件,可能是通过调用fun( );这个结果被称为“声明”。

代码语言:javascript
复制
void fun ( ) {
  ...
}

定义了函数fun (),并且因为它是在这个文件中定义的,所以不需要链接器在其他地方查找该函数。

声明函数extern没有什么坏处:链接器做了正确的事情。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7866576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档