C编码规范(Ver0.1).docVIP

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C编码规范(Ver0.1)

C++编码规范 STLPORT 5更新 STLPORT5 支持vc71和vc8 。 新项目建议使用vc8(vc2005)。 需要的头文件和LIB放在122/horizon/STLPORT5.0.2/目录下。 StlPort与BoundChecker兼容 当BoundChecker与STLPORT一起使用时,会因为stlport使用vector内存池,以及replacement new,而误报内存泄露等错误。解决方法: 1,当使用BoundChecker时,把系统目录设置成VC自带的stl目录。 2,当需要stlport与BoundChecker一起使用时,需要改变STLPORT配置后,重新编译stlport。步骤: A,修改stlport/stl/_config.h ,在39行左右(最前面)加上” #define _STLP_DONT_USE_SHORT_STRING_OPTIM 1 ” B,修改 _site_config.h ,在123行左右,“#define _STLP_USE_NEWALLOC 1”和 “#define _STLP_USE_MALLOC 1” 这样编译后的版本,无法使用stlport对string的优化,以及自己的malloc和new。意义没有方法1大 STLPORT 使用规范 1,综述 STL PORT 具有对所有容器进行越界检查, 遍历器归属,有效性,算法条件检查等各种安全检查。所以H3D工程使用STLPORT作为标准库。 STL PORT 在vc2003/05中,需要使用自己的stream静态链接库。 *.lib已提供。 2, 使用 在vc-?tools-options-project-VC++ directories-, 把STL PORT的include , lib目录, 分别设置在VC系统include 和 lib目录的前面。 3, 配置 需要打开STL PORT DEBUG功能时,在项目属性-C/C++-PreProcessor-Preprocessor Definitions- 增加 _STLP_DEBUG. 跨DLL编程事项 1, 不得提供带有stl参数的接口函数 2, 不得同时在两个DLL对一个局部HEAP进行操作,例如: 在一个DLL里new的指针,在另外一个DLL内delete ASSERT定义 使用: assert_custom(bool b){if (b==false) __asm{int 3}; }重新定义assert 内存检测 必须使用memory manager对内存进行检测。 严格控制new 以及生命对象周期。 书写new的同时,必须先构造好delete的函数。在所有出现new和delete的地方,加入 memory manager头文件。 STL PORT和MEMORY MANAGER放在 192.168.0.122/share/Horizon 普适原则 1.?直白式的代码比起注释来的更有意义 2.?Coders不能为了图方便而牺牲了代码的健壮性和可理解性 3.?格式化规则应当明白直接,花时间考虑如何格式化代码比多花时间编码更有用 4.?规则应该防范那些会引发微妙错误的代码 5.?应该避免无意义的过于烦琐的规则1.?文件及预处理器1.1 ?需要有 1.2?在头文件中使用#include?guards防止被include多次. ????(就是#ifndef?xxx_hpp?#define?xxx_hpp?#endif) 1.3?Cpp源程序应该#include的头文件必须是其对应的头文件头文件 1.4?#include一律出现在文件开头,?如果是头文件放在#include?guards?之后 1.5?尽量避免头文件依赖如果某个头文件中需要用到某个类的引用或指针,那么只需要一个forward?declaration就足够了 如: class Renderer; Renderer* a; Renderer b; 在使用模块时,为了避免过于繁琐的指定所需要的模块中的头文件,可以使用由模块提供的一个功能头文件,这个头文件将包含模块定义的所有头文件。这个头文件由模块编写者提供。 1.6?使用相对#include路径.?目录结构最好和工程的namespace结构类似 避免定义预处理的宏?特别是在头文件中(规则1.2例外),请使用enum,const,function,template?等避免宏的定义.…}或templateclass A max(const A a, const A b){…}而不是#define max(a, b) … 2?命名2.1?类成员变量要使用比较能够明确表意的名字,局部变量名可以简略。类成员变量与局部变量名在命

文档评论(0)

weixin98 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档