首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >外部变量是如何定义的?

外部变量是如何定义的?
EN

Stack Overflow用户
提问于 2013-09-16 12:26:01
回答 4查看 153关注 0票数 0
代码语言:javascript
复制
extern int i;// is a declaration
int j; //definition

作者给出了第一句话是声明,第二句话是定义,我认为第二句话是声明,第一句话是定义。

我浏览了赫伯特·斯奇尔特的完整参考文献C。

EN

回答 4

Stack Overflow用户

发布于 2013-09-16 12:30:43

代码语言:javascript
复制
extern int i

...is一个variable declaration,因为它只告诉编译器“存在一个名为i的变量,但它是在其他地方定义的”。

代码语言:javascript
复制
int i

...is变量定义,因为它告诉编译器创建实际的变量。

票数 2
EN

Stack Overflow用户

发布于 2013-09-16 12:33:27

关键字extern用于声明外部变量,因此本书是正确的。

有一个例外,如果添加了一个初始化器,那么它是一个定义:

代码语言:javascript
复制
extern int i = 42;
票数 0
EN

Stack Overflow用户

发布于 2013-09-16 12:46:41

首先,第一个和第二个都不是“声明”。在C语言中,声明不是语句。声明是声明,语句是语句-在C中,这是两个独立的、不相交的世界。

其次,每个定义都同时是一个声明。定义只是一种特殊的声明。所以把声明和定义对立起来是不正确的,这是一种相互排斥的方式。

第三,评论说的是对的,你错了。第一个是未定义的声明。第二个是定义。

第四,第二个是所谓的试探性定义--C语言特有的特性。它有一些特殊的特性。在一般情况下,它不一定定义具有外部链接的变量。它定义的变量的链接可能取决于上下文。在您的特定示例中,从字面上看,它确实定义了一个具有外部链接的变量。您可以搜索术语暂定定义来了解更多信息。

第五,希尔特的书中充斥着大量的术语错误(不仅仅是术语错误)。这实际上是他们最广为人知的地方。

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

https://stackoverflow.com/questions/18820403

复制
相关文章

相似问题

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