c++编码规范(ver 0.1)

c++编码规范(ver 0.1)

ID:1658377

大小:61.00 KB

页数:12页

时间:2017-11-12

c++编码规范(ver 0.1)_第1页
c++编码规范(ver 0.1)_第2页
c++编码规范(ver 0.1)_第3页
c++编码规范(ver 0.1)_第4页
c++编码规范(ver 0.1)_第5页
资源描述:

《c++编码规范(ver 0.1)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、C++编码规范(Ver0.1)文档历史修订日期修订内容修订版本修订人2006-7-4初始版.10EVA2006-7-12STLPORT,跨dll编程,assert.11PUZZY2006-7-19STLPORT5更新.12PUZZYSTLPORT5更新STLPORT5支持vc71和vc8。新项目建议使用vc8(vc2005)。需要的头文件和LIB放在122/horizon/STLPORT5.0.2/目录下。StlPort与BoundChecker兼容当BoundChecker与STLPORT一起使用时,会

2、因为stlport使用vector内存池,以及replacementnew,而误报内存泄露等错误。解决方法:1,当使用BoundChecker时,把系统目录设置成VC自带的stl目录。2,当需要stlport与BoundChecker一起使用时,需要改变STLPORT配置后,重新编译stlport。步骤:A,修改stlport/stl/_config.h,在39行左右(最前面)加上”#define_STLP_DONT_USE_SHORT_STRING_OPTIM1”B,修改_site_config.h,在

3、123行左右,“#define_STLP_USE_NEWALLOC1”和“#define_STLP_USE_MALLOC1”这样编译后的版本,无法使用stlport对string的优化,以及自己的malloc和new。意义没有方法1大STLPORT使用规范1,综述STLPORT具有对所有容器进行越界检查,遍历器归属,有效性,算法条件检查等各种安全检查。所以H3D工程使用STLPORT作为标准库。STLPORT在vc2003/05中,需要使用自己的stream静态链接库。*.lib已提供。2,使用在vc-à

4、tools->options->project->VC++directories->,把STLPORT的include,lib目录,分别设置在VC系统include和lib目录的前面。3,配置需要打开STLPORTDEBUG功能时,在项目属性->C/C++->PreProcessor->PreprocessorDefinitions->增加_STLP_DEBUG.跨DLL编程事项1,不得提供带有stl参数的接口函数2,不得同时在两个DLL对一个局部HEAP进行操作,例如:在一个DLL里new的指针,在另外

5、一个DLL内deleteASSERT定义使用:assert_custom(boolb){if(b==false)__asm{int3};}重新定义assert内存检测必须使用memorymanager对内存进行检测。严格控制new以及生命对象周期。书写new的同时,必须先构造好delete的函数。在所有出现new和delete的地方,加入memorymanager头文件。STLPORT和MEMORYMANAGER放在192.168.0.122/share/Horizon普适原则1. 直白式的代码比起注释来

6、的更有意义2. Coders不能为了图方便而牺牲了代码的健壮性和可理解性3. 格式化规则应当明白直接,花时间考虑如何格式化代码比多花时间编码更有用4. 规则应该防范那些会引发微妙错误的代码5. 应该避免无意义的过于烦琐的规则1. 文件及预处理器1.1 需要有统一的格式来进行文件头的编写,法律以及更改日志在版本没有稳定前只需留出位置不需要填写内容。具体统一格式下一版中出。1.2 在头文件中使用#include guards防止被include多次.    (就是#ifndef xxx_hpp #define

7、 xxx_hpp #endif)。如何使用guards(#if!definedvs#ifndef)下一版给出。1.3 Cpp源程序应该最开始#include的头文件必须是其对应的头文件,如果无法编译应该改变其对应的头文件。1.4 #include一律出现在文件开头, 如果是头文件放在#include guards 之后的开头1.5 尽量避免头文件依赖,如果某个头文件中需要用到某个类的引用或指针,那么只需要一个forward declaration就足够了。如:classRenderer;Renderer*

8、a;Renderer&b;在使用模块时,为了避免过于繁琐的指定所需要的模块中的头文件,可以使用由模块提供的一个功能头文件,这个头文件将包含模块定义的所有头文件。这个头文件由模块编写者提供。1.6 使用相对#include路径. 目录结构最好和工程的namespace结构类似推荐避免定义预处理的宏 特别是在头文件中(规则1.2例外),请使用enum,const,function,template 等避免宏的定义.如:用enum{

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。