从extern说起

C语言有一个extern关键字,这个关键字最开始的目的主要是为了可以在一个文件中引用另一个文件的变量和函数而不用包含其头文件。但是这样的一个特性却导致了一个问题,那就是对于全局变量,你甚至都不用包含头文件就可以使用了。在方便的同时也带来了代码阅读的困难。

我之所以有这样的一个体会,是因为看到一份代码滥用这个属性。本来可以通过函数变量将一个固定值的参数进行传递,非要使用extern来传递。在分析代码逻辑的时候,会对于这个变量感到非常的奇怪,因为并没有包含头文件,变量就可以使用了。这个应该算作语言的特性被滥用的一种体现。

extern在C语言中应该使用的比较多,但是在C++语言里就比较少了。C++语言为了兼容C语言,所以支持了这个关键字。而很多从C语言转到C++语言的人,在最开始的时候,也会比较习惯使用这个关键字。不过因为这个关键字比较容易被误用,所以在尽可能的情况下,少用这个关键字吧。

这种情况最有名的关键字应该是goto,因为goto的跳转有可能会让程序的逻辑变得非常难理清。所以才会有禁用goto这样的比较武断的结论,因为太容易被滥用。在无法明确自己是否有能力去使用的时候,禁用是一个不太差的选择。

一篇牢骚,就写到这里吧。