带你读《2022技术人的百宝黑皮书》——19条跨端cpp开发有效经验总结(1)

简介: 带你读《2022技术人的百宝黑皮书》——19条跨端cpp开发有效经验总结(1)

19条跨端cpp开发有效经验总结


image.png作者:鹿慕

image.png出品:大淘宝技术

 

 

跨多端开发避坑指南

 

前言

 

细想,专门从事跨多端开发已两年有余,前段时间因为组里跨桌面端项目需要回归windows下开发了整整2个月, 怎么形容这两个月呢,嘿嘿,各种“肆无忌惮”的写法,终于不用在写一行代码考虑后面n个端的行为了,"劳动力"、"效率"得到大幅度解放,但是随着windows发版结束后,我负责mac的适配相关工作,在这个阶段,发现很多不 "合规"的奇技淫巧(原定2个工作日的适配quota,大概进行了一周),作为一个略有想法的cpp程序员,遂产生了想写一个跨多端开发避坑指南的想法,想起过去看的Scott Meyers的《Effective C++》. 努力写"xx条有效使用

cpp开发跨端的经验",期望看完此文可以帮助大家在如何保持同一份cpp代码在多个平台编译和构建上行为一致上有一丝丝帮助。

 

跨多端开发下的复杂性,究其本质大多是因为两个原因引发的

  1. 多系统下平台差异
  2. 多编译器下行为不确定性

下面主要讲解的也将从这两个方面入手。

 

同时,在拜读了多份cpp程序员开发宝典里,还是觉得 Google  C++  Style  Guide是最有效的,最直接的避坑宝典,依旧推荐给大家:https://google.github.io/styleguide/cppguide.html

 

下面进入正文——

 

C++ VERSION 的选择

 

C++ version选择可以说对于跨终端开发是至关重要的,跨端开发一个比较难的点在于多平台下,如何很好的支撑平台差异点,随着C++版本的升级,越来越多的新feature在标准库中得到支持,这也就是意味着开发者可以更少的关注平台差异点,因此这里建议选择最新的稳定版本,截止到目前推荐使用C++17.

 

 

禁止在一个单独的编译中重复包含文件的现象出现

 

可以通过两种方式有效的避免此类情况

1.#pragma once,需要特别注意 这是一个非标准但是被广泛支持的前置处理符号,在主流的编译中clang,ms等均已支持。

#pragma once
#include<vector> 
...


 2.使用#define的方式

#ifndef FOO_BAR_BAZ_H_
#define FOO_BAR_BAZ_H_
...
#endif // FOO_BAR_BAZ_H_


 

 

路径和头文件路径分隔符的问题

 

在windows中路径的识别对于正反斜杠均支持,但是在linux中,只能是/,此外,在linux中对于路径是严格区分大    小写的,对于windows则忽略大小写。

 

建议:                                    

1.对于路径均需严格保证大小写与实际路径的匹配

2.在代码中禁止对路径使用“\”,请用“/”代替。

 

此举,将在你从win到mac适配过程中,节省大量的工作量。

 

C标准库的头文件包含

 

在Windows下某些C标准库的头文件不用显式包含,但是在linux下需要显式包含。因此在跨端开发中,应在.c和. cpp文件中尽量包含这个文件中需要的头文件,并且这也是C语言标准从C99以后的标准要求。

 

 

带你读《2022技术人的百宝黑皮书》——19条跨端cpp开发有效经验总结(2)https://developer.aliyun.com/article/1340928?groupCode=taobaotech

相关文章
|
机器学习/深度学习 数据采集 人工智能
【AIGC】人工智能生成的漫画
【AIGC】人工智能生成的漫画
512 0
|
Linux
一个进程最多可以创建多少个线程基本分析
一个进程最多可以创建多少个线程基本分析
750 1
|
数据采集 人工智能 API
Qwen2.5-Coder深夜开源炸场,Prompt编程的时代来了!
通义千问团队开源「强大」、「多样」、「实用」的 Qwen2.5-Coder 全系列,致力于持续推动 Open Code LLMs 的发展。
|
6月前
|
设计模式 Prometheus 监控
并发设计模式实战系列(20):扇出/扇入模式(Fan-Out/Fan-In)(完结篇)
🌟 大家好,我是摘星!🌟今天为大家带来的是并发设计模式实战系列,第二十章,废话不多说直接开始~
221 0
|
11月前
|
人工智能 自然语言处理 测试技术
DeepSeek V3:DeepSeek 开源的最新多模态 AI 模型,编程能力超越Claude,生成速度提升至 60 TPS
DeepSeek V3 是深度求索公司开源的最新 AI 模型,采用混合专家架构,具备强大的编程和多语言处理能力,性能超越多个竞争对手。
1852 5
DeepSeek V3:DeepSeek 开源的最新多模态 AI 模型,编程能力超越Claude,生成速度提升至 60 TPS
|
机器学习/深度学习 存储 人工智能
2024 年 AI 辅助研发趋势
这篇文章讨论了2024年AI辅助研发的趋势,包括技术进展、行业应用案例、面临的挑战与机遇、未来趋势预测、与法规的影响以及人才培养与教育。文章强调了AI在医药、汽车和电子等行业的应用,并指出了AI辅助研发面临的技术挑战、伦理问题和数据安全问题,同时也提出了技术创新、伦理规范和数据安全技术等方面的机遇。文章还预测了AI与研发流程的深度融合、智能研发平台的崛起和AI驱动的创新模式等未来发展方向,并讨论了政府政策和法规对AI辅助研发的影响,以及教育体系如何适应这一变革,培养具备AI技能的研发人才。
575 1
|
存储 自然语言处理 测试技术
Transformers 4.37 中文文档(八)(4)
Transformers 4.37 中文文档(八)
447 2
|
编译器 C语言 C++
【C++学习】C++入门 | 引用 | 引用的底层原理 | auto关键字 | 范围for(语法糖)
【C++学习】C++入门 | 引用 | 引用的底层原理 | auto关键字 | 范围for(语法糖)
318 0
|
安全 调度 C++
互斥锁 vs 自旋锁:底层机制详细解析
互斥锁 vs 自旋锁:底层机制详细解析
430 1
|
存储 机器学习/深度学习 缓存
万字详解C++内存池:提高内存分配效率的利器(上)
万字详解C++内存池:提高内存分配效率的利器
万字详解C++内存池:提高内存分配效率的利器(上)