C++中在多个编译单元中如何定义常量
2008-05-31 11:35
381 查看
C++中在多个编译单元中如何定义常量
【方法一】: 在某个公用的头文件中直接在某个名字空间中或者全局名字空间中定 义符号常量并初始化(有无static)无所谓,例如:
// CommonDef.h
const int MAX_LENGTH=1024;
然后每一个使用它的编译单元#include改头文件即可
【方法二】: 在某个公用头文件中并且在某个名字空间中或者全局名字空间中将符号常量声明为extern的,例如:
//CommonDef.h
extern const int MAX_LENGTH;
并且在某个源文件中定义一次并初始化:
const int MAX_LENGTH=1024;
然后每一个使用它的编译单元#include上述头文件即可
两种方法的比较:
优点:
方法一: 方法二:
维护方便 (1)节约存储,每一个编译单元访问都是这个唯一的定义。
(2)修改初值后只需重新编译定义所在编译单元即可,影响面很小。
缺点:
方法一: 方法二:
(1)如果修改常量初值,则将影响多个 如果要改变初值,要改变源文件
编译单元,所有受影响的编译单元
必须重新编译。
(2)每一个符号常量在每一个包含了它们的
编译单元内都存在一份独立的拷贝内容,
每个编译单元访问的就是各自的拷贝内容,
因此浪费存储空间
【方法一】: 在某个公用的头文件中直接在某个名字空间中或者全局名字空间中定 义符号常量并初始化(有无static)无所谓,例如:
// CommonDef.h
const int MAX_LENGTH=1024;
然后每一个使用它的编译单元#include改头文件即可
【方法二】: 在某个公用头文件中并且在某个名字空间中或者全局名字空间中将符号常量声明为extern的,例如:
//CommonDef.h
extern const int MAX_LENGTH;
并且在某个源文件中定义一次并初始化:
const int MAX_LENGTH=1024;
然后每一个使用它的编译单元#include上述头文件即可
两种方法的比较:
优点:
方法一: 方法二:
维护方便 (1)节约存储,每一个编译单元访问都是这个唯一的定义。
(2)修改初值后只需重新编译定义所在编译单元即可,影响面很小。
缺点:
方法一: 方法二:
(1)如果修改常量初值,则将影响多个 如果要改变初值,要改变源文件
编译单元,所有受影响的编译单元
必须重新编译。
(2)每一个符号常量在每一个包含了它们的
编译单元内都存在一份独立的拷贝内容,
每个编译单元访问的就是各自的拷贝内容,
因此浪费存储空间
相关文章推荐
- C++中在多个编译单元中如何定义常量
- C++ 关于声明,定义,类的定义,头文件作用,防止头文件在同一个编译单元重复引用,不具名空间
- C++ : 编译单元、声明和定义、头文件作用、防止头文件在同一个编译单元重复引用、static和不具名空间
- C++ 关于声明,定义,类的定义,头文件作用,防止头文件在同一个编译单元重复引用,不具名空间
- C++ : 编译单元、声明和定义、头文件作用、防止头文件在同一个编译单元重复引用、static和不具名空间
- C与C++各自是如何定义常量的?
- C++ 关于声明,定义,类的定义,头文件作用,防止头文件在同一个编译单元重复引用,不具名空间
- C++不同编译单元内定义的非局部静态对象的初始化顺序
- C++ : 编译单元、声明和定义、头文件作用、防止头文件在同一个编译单元重复引用、static和不具名空间
- C++ 关于声明,定义,类的定义,头文件作用,防止头文件在同一个编译单元重复引用,不具名空间
- C++ 关于声明,定义,类的定义,头文件作用,防止头文件在同一个编译单元重复引用,不具名空间
- C++ 关于声明,定义,类的定义,头文件作用,防止头文件在同一个编译单元重复引用,不具名空间
- C++ 关于声明,定义,类的定义,头文件作用,防止头文件在同一个编译单元重复引用,不具名空间
- C++中如何定义某个数组的引用?
- C++ 单例模式中处理在类中声明一个指向一个自己的指针,在编译时显示定义的指针未定义的处理办法
- php如何判断常量是否被定义?
- 如何在 Visual C++.NET 2003 下编译eMule
- 如何在QML中调用在C++中定义的Video MediaPlayer
- 如何判断一段程序是由C 编译程序还是由C++编译程序编译的?
- Java类更改常量后如何编译才能生效