- 论坛徽章:
- 8
|
1、 对c/c++编译器来说,扩展名不对应任何功能
这就好像 “匈牙利命名法” 不会给编译器增加任何功能一样。
同样,绝不存在什么“因为用了匈牙利命名法,结果导致程序无法完成什么功能”的情况。
这点我反复强调过,反复车轱辘回来很没意思。
2、既然扩展名不提供任何功能,那么遵循扩展名的一般约定就不会产生/抑制任何技术问题。
唯一的差异,就是愿不愿意拿规范当回事。
愿意遵守规范,那么无论是在 .h里实现、在 .inc 里实现(STL的典型做法)还是在 .share .code 里实现,都可以在尽量不违反基本规范的前提下解决问题——除了扩展名有所改变,不会有其他任何痛苦;但整个项目一下子就q清爽多了,其他人就不需要疑惑究竟哪些.c文件敢碰,哪些.c摸都别摸了。
3、正如前面一位朋友所说的: 命名空间是做什么的? std: xx 和 std_xxx有本质区别吗?
如果真有合理的模块划分、并且还无法利用命名空间的话, 模块名_xxx 是否可以保证没有冲突?
4、事实上,如果真想解决问题,在.h+.c框架内完全可以做到。无非是对源码组织的要求更高了一点而已。
在 xx.h中include yy.h,相当于公开被引用的yy.h的接口;在xx.c中include yy.h,相当于隐藏 yy.h 提供的接口。
把某个内部模块先独立编译成静态库,然后再把这个内部静态库编译进供别人使用的模块(也编译成库),这样就可以避免内部模块的符号被暴露出去。
递归应用以上规则,有什么解决不了的?
5、wo level hen high, I dou can ba han yu pin sound xie de nobody neng look dong. |
|