无
分类: C/C++
2010-09-10 19:36:09
什么叫命名污染?
简而言之,命名污染就是来自不同模块的全局变量或外部函数的名称重复,从而导致链接失败,或是链接后产生错误的执行结果--链接器在静态函数库查找符号时,将按顺序查找静态函数,找到某个匹配的符号后,就不会查找其它函数库中是否含有相同的符号名。
危害
在实际的开发中,大型项目由多个开发人员并行开发,由命名污染造成的程序运行错误是很难发现的。因此,我们在开发之前就要采取必要措施来避免此类问题。
措施
也许大家在阅读Linux模块驱动程序代码发现了,为了保证模块的独立性,无论是函数还是全局变量,一律是定义成static类型的。所以措施之一:
1.将仅在单个源文件中使用的函数、全局变量等,定义为static类型;
另外一个造成命名污染的原因可能是使用过于简单命名的全局变量名或外部函数,所措施二就是:
2.使用适当的前前缀或某种风格来定义全局变量或外部函数。
文章参考:《嵌入式软件开发及C语言实现--MiniGUI剖析》,魏永明先生所著。