Redian新闻
>
C++里 variable declaration 有什么用?
avatar
C++里 variable declaration 有什么用?# Programming - 葵花宝典
c*n
1
C++里 variable declaration 有什么用?
function declaration的意义在于你可以先声明了有这个函数然后后面再写这个函数的
具体code,这样代码的结构可以更清晰。
可是variable declaration有什么用呢?
比如来如下一句:
extern int x;
如果x是在其他文件里面定义的,那这句话倒是有用,
可是如果x是在同一个文件里定义的,那还得在后面某个地方再来一句int x;来定义这
个x
还不如就在这里一起给定义了,费那事干吗?
按照Thinking in C++上说的
It can mean the definition is external to the file, or that the definition
occurs later in the file.
这后一种情况,有什么存在的必要么?
avatar
o*r
2
如果你没定义就用了某个变量,
compiler怎么知道你是typo还是啥,
它得scan 到后面的定义才能分析前面的code
嵌套一下不累死了
这还不是最主要的,
c/c++ compiler得知道变量的type, 编译时要检查

【在 c*********n 的大作中提到】
: C++里 variable declaration 有什么用?
: function declaration的意义在于你可以先声明了有这个函数然后后面再写这个函数的
: 具体code,这样代码的结构可以更清晰。
: 可是variable declaration有什么用呢?
: 比如来如下一句:
: extern int x;
: 如果x是在其他文件里面定义的,那这句话倒是有用,
: 可是如果x是在同一个文件里定义的,那还得在后面某个地方再来一句int x;来定义这
: 个x
: 还不如就在这里一起给定义了,费那事干吗?

avatar
X*r
3
比如在头文件里,它既被其它源文件所包含,也被自己对应的源文件所包含,所以同一
个声明就适用于两种情况。
函数原型不也是一样的吗?

【在 c*********n 的大作中提到】
: C++里 variable declaration 有什么用?
: function declaration的意义在于你可以先声明了有这个函数然后后面再写这个函数的
: 具体code,这样代码的结构可以更清晰。
: 可是variable declaration有什么用呢?
: 比如来如下一句:
: extern int x;
: 如果x是在其他文件里面定义的,那这句话倒是有用,
: 可是如果x是在同一个文件里定义的,那还得在后面某个地方再来一句int x;来定义这
: 个x
: 还不如就在这里一起给定义了,费那事干吗?

avatar
c*n
4
有两种情况,第一,该变量是在另外的文件中定义的,第二,该变量是在本文件中定义
的,但是定义(definition)出现在后面,前面先声明(declaration)一下。
对于第二种情况,为什么不再这个地方干脆就定义了算了呢?
换句说话,对于所有的
extern int x;
可以就在这个地方用
int x;
给定义了不就完了?

【在 o******r 的大作中提到】
: 如果你没定义就用了某个变量,
: compiler怎么知道你是typo还是啥,
: 它得scan 到后面的定义才能分析前面的code
: 嵌套一下不累死了
: 这还不是最主要的,
: c/c++ compiler得知道变量的type, 编译时要检查

avatar
o*r
5
你说的第二种是用法问题,
有时候需要先使用,
后定义,
方便与否而已

【在 c*********n 的大作中提到】
: 有两种情况,第一,该变量是在另外的文件中定义的,第二,该变量是在本文件中定义
: 的,但是定义(definition)出现在后面,前面先声明(declaration)一下。
: 对于第二种情况,为什么不再这个地方干脆就定义了算了呢?
: 换句说话,对于所有的
: extern int x;
: 可以就在这个地方用
: int x;
: 给定义了不就完了?

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。