如何做网站视频,哪些网站可以做邀请函,做类似淘宝网站怎么做,鞍山信息港家讯房产点击蓝字关注我们因公众号更改推送规则#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络#xff0c;侵删C最佳实践:1. 工具2. 代码风格3. 安全性4. 可维护性5. 可移植性及多线程#xff08;本文#xff09;6. 性能7. 正确性和脚本可移植性明确使用的…点击蓝字关注我们因公众号更改推送规则请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络侵删C最佳实践:1. 工具2. 代码风格3. 安全性4. 可维护性5. 可移植性及多线程本文6. 性能7. 正确性和脚本可移植性明确使用的类型大多数产生告警的可移植性问题都是因为我们没有注意类型。标准库和数组使用size_t作为索引标准容器的大小使用size_t类型。如果对size_t的处理不正确可能会潜伏有微妙的64位问题这种问题只有在开始32位整型索引溢出之后才会出现。另一种类似问题是char类型和unsigned char类型的使用。参考: http://www.viva64.com/en/a/0010/使用标准库std::filesystemC17新增了新的filesystem库在所有支持的编译器上提供了可移植的文件系统访问能力。std::threadC11的线程功能能够基于pthread或WinThreads使用。其他本系列中的其他大多数问题最终都可以归结到可移植性上尤其要注意避免静态(static)类型(参考下文多线程部分)。多线程避免全局数据全局数据会导致函数之间意想不到的副作用并可能使代码难以甚至无法并行化。即使现在的代码不是为了并行化而写也没有理由在将来永远不做并行化。静态(static)数据除了作为全局数据之外静态数据并不总是像期望的那样被构造和析构在跨平台环境中尤其如此。例如有个g的bug[2]就是关于从动态模块加载的共享静态数据的销毁顺序的。共享指针std::shared_ptr和全局变量一样(http://stackoverflow.com/a/18803611/29975)允许多段代码与相同的数据交互。单例(Singleton)单例通常使用静态和/或shared_ptr实现。避免堆操作堆操作在多线程环境中要慢得多在许多甚至大多数情况下复制数据会更快更别提还有move操作这之类的东西。互斥对象(mutex)和可变对象(mutable)一起使用(MM规则C11)对于成员变量最好同时使用互斥锁和可变变量这在两方面都适用:可变成员变量被假定为共享变量因此应该与互斥锁同步(或原子化)。如果一个成员变量本身是互斥的那么应该是可变的这是在const成员函数中使用它所必需的。更多信息请参阅Herb Sutter的文章: GotW #6a Solution: Const-Correctness, Part 1[3]也可以参考前面关于const 返回值安全性[4]的讨论。如果你年满18周岁以上又觉得学【C语言】太难想尝试其他编程语言那么我推荐你学Python现有价值499元Python零基础课程限时免费领取限10个名额▲扫描二维码-免费领取戳“阅读原文”我们一起进步