读书人

使用#define 跟 const char* 声明资源

发布时间: 2014-01-03 14:10:51 作者: rapoo

使用#define 和 const char* 声明资源名有什么好处?
问题:RT

例:
一张图片名: pic.png

为了方便维护,我们一般我们不会把图片名称直接硬编码到程序中,而是会#define IMG pic.png 或者 const char* IMG = "pic.png" ,声明之后使用,两者都能达到我们的效果.

问题:
不知道两者的优劣和区别在什么地方?
[解决办法]
const char * 比宏定义好, 宏定义是c从宏汇编继承过来的用法, 属于低级语言习惯, 应尽量避免使用.
以上两种都比直接硬编码好, 如果你要修改这个名称很容易找到, 而且只需要修改一次.
[解决办法]
const char* 好。
因为宏定义的内容在头文件里。你要是修改内容,头文件就会被修改,于是所有使用了这个头文件的代码都需要被重新编译,代价高昂。
相比之下,全局变量的定义和声明可以分开。你修改内容的时候,只有这一个实现文件需要重新编译。代价小得多。

读书人网 >C++

热点推荐