extern的困惑
发表时间:2006-06-24 00:51:01 关键词:C++,MFC,VC,Primer,编程,教程,读书
(点击:) 把这篇文章告诉我的QQ或MSN朋友
extern用来告诉程序:你不用为我的变量开劈内存空间,你只要知道这个变量别处已经声明过了。所以,我总是在程序包含多个CPP文件时才这样用:
1、在某一个CPP文件中直接定义变量,如int i = 0;
2、其它CPP文件中声明变量,如extern int i;
但是,书中介绍exturn还可以用来定义,如:extern double pi = 3.1416;特点是该extern语句包含变量的初始化。
我觉得C++标准这样做有些多余,而且增加了出错的可能性。因为“extern double pi = 3.1416;”完全可以用“double pi = 3.1416;”来代替,这样做可以让定义与声明划清界线。毕竟定义只能有一次,而声明可以无数次。如果没有这个特性,可以让程序员简单记为“不带extern的只能有一次,带extern的可以有无数次,而且extern同时不能指定初始值。”这一特性的支持,使原本简单的规则变得复杂,但没有带来灵活(众所周知,C++的复杂是以高度灵活为补尝的)。
这个段落还让我认识到了我以前使用extern的不足。我以往在同一个CPP文件中只使用一次extern,所以我往往是在文件头部用extern语句来声明一下变量,这样做虽然没有什么错,但却会导致上下翻查:有时在文件的某一处用到变量时,想看一下它的声明,不得不把滚动条拖到顶上去查看。如果在用到它的段落开头处再声明,明显比顶部声明要好一些。
本站特约顾问律师常州东晟律师事务所朱立律师(电话13915029670,QQ646146109)提醒您:
本站文章皆为作者原创,其它媒体(包括但不限于报刊、杂志、网站、电视、电台)未经作者书面许可严禁转载(或部分摘录)!
本站文章皆为作者原创,其它媒体(包括但不限于报刊、杂志、网站、电视、电台)未经作者书面许可严禁转载(或部分摘录)!
