浪子归家|C语言的const关键词的三种用法( 二 )

这种方案必须在头文件中用关键字static声明全局const变量 。 如果去掉static , 那么在file1.c和file2.c中包含constant.h将导致每个文件中都有一个相同标识符的定义式声明 , C标准不允许这样做(然而 , 有些编译器允许) 。 实际上 , 这种方案相当于给每个文件提供了一个单独的数据副本[插图] 。 由于每个副本只对该文件可见 , 所以无法用这些数据和其他文件通信 。 不过没关系 , 它们都是完全相同(每个文件都包含相同的头文件)的const数据(声明时使用了const关键字) , 这不是问题 。
头文件方案的好处是 , 方便你偷懒 , 不用惦记着在一个文件中使用定义式声明 , 在其他文件中使用引用式声明 。 所有的文件都只需包含同一个头文件即可 。 但它的缺点是 , 数据是重复的 。 对于前面的例子而言 , 这不算什么问题 , 但是如果const数据包含庞大的数组 , 就不能视而不见了 。


推荐阅读