专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

C实用学习指南

  C发展得非常快!例如,C标准的页数从C9803的879页增加到了C20的1834页,多了近1000页!更重要的是,C每次修订后,我们都会获得几十个新特性。你需要学习所有这些东西才能写出好代码吗?如何在当今的C世界中保持理智?
  介绍
  你可能知道C是一种复杂的语言。我甚至发现了一整页Wiki是讲对Cpp的批判的。现代C甚至为生态添加了更多内容。
  以下是我之前提到的规范页数的完整数据:C9803879,N1905,2005年10月C111324,最后草案,N3337,2012年1月C141368,最后草案,2014年11月C171586,草案,N4606C201834,草案,N4861
  看起来C17几乎比C9803大了80,而C的最新草案比C03多了将近1000页。你可以抱怨增加的这些复杂性,想学好所有这些东西也很困难。但这有那么可怕吗?面对这样的情况,你能做些什么?
  首先,我们来看看你在C中可能会遇到的一些问题。
  一些问题
  仅举几例:节奏太慢节奏太快特性的混乱复杂性编译时间慢缺乏依赖管理
  我们来仔细研究一下。
  节奏太慢
  2017年,我们迎来C17。虽然每三年就迎来一个新标准是很棒的,但许多开发人员抱怨新版本并不是每个人都期待的。
  很多特性:比如概念(concept)、模块、范围(range)、协程(coroutine)都没有被接受,我们至少需要再等三年才能让它们进入规范。
  在2020年,C20已经准备就绪,并且这些重要特性将随编译器一起提供!但我们还是会抱怨合约(contract)还没加进来,反射(reflection)、执行器(executor)或网络(networking)仍在讨论中。它们可能出现在C23甚至更高版本中。
  看起来有些特性接受起来比较慢而且总有东西值得抱怨。
  节奏太快
  像往常一样,我们在这里可能有两种相互矛盾的意见。尽管对某些人来说升级节奏很慢,但对其他人来说却很难跟上变化。
  你刚刚学习了C1114现在你就需要更新C17的知识,然后C20就在路上了。三年并不是那么短的时间,但请记住,编译器一致性、公司政策、团队指南可能会以不同的节奏前进。
  你的公司是立即更新到最新的C版本还是等待几年?
  特性的混淆复杂性
  只需阅读这条评论:
  CallMeDonk:
  我喜欢C。这是我的首选语言,但你必须承认,它对值类的大杂烩实现是很怪异的。包括我在内的大多数程序员更喜欢简单的、定义明确的语言结构,而不是奇怪和复杂的语法。
  C在各个方面都很清晰吗?可能不是
  以下是一些可能难以理解并可能让程序员糊涂的主题:
  移动语义
  移动语义的原则非常明确:不要复制,而是尝试窃取托管资源的内部结构,你应该获得不错的性能提升。但魔鬼都藏在细节中。
  我不会写很多通用代码,所以幸运的是,我不必一直考虑移动语义。但是,当我遇到move和const时会很困惑请参阅我上一篇关于该主题的文章。我不相信所有C开发人员都会理解这里的规则。特别是你现在需要记住编译器生成的六个默认操作:默认构造器、析构函数、复制构造器、移动构造器、赋值运算符和移动赋值运算符。
  RvaluesxvaluesprvaluesmyValues、fooValues
  最后一个是我编的但那么多值类别实在太让人头疼了!
  在C(或C9803)中,你只需要知道左值与右值,现在它有点微妙了。
  不过,问题是你是否需要记住它?
  一些不错的评论:
  c0r3ntin:
  这很复杂,但不是每天都能遇到。这个值可以address吗?可以复制吗?可以移动吗?应该移动吗?只有在极少数情况下,你才需要主动去澄清并充分理解它们。(模板化库编写、热路径等)。大多数时候C并不比java或其他东西复杂。可悲的是大多数人都忘了这一点。C可能是最复杂的语言,但是你可以编写非常好的代码而无需关心具体的细节。BigObjectogetBigObject();
  初始化
  现在有18种方式(从C17开始)!
  参阅:
  C中的初始化是疯狂的
  https:www。reddit。comrcppcomments5p5ed7initializationincisbonkers?fileGuidHjDhgwWw6jPKDcCK;
  rcpp线程
  https:blog。tartanllama。xyzinitializationisbonkers
  模板(和模板推导)
  当我看到C17的所有变更时,我很迷茫;关于模板的细节太多了。
  同样的情况发生在C20中,我们迎来了一个重大且期待已久的改进:概念它彻底改变了C。
  然而,如果你想学习模板,一开始可能会不知所措。
  ABI
  随着新特性列表的不断增长,从头开始修复C设计中的旧问题可能是很诱人的主题。但这种语言的原则是不能破坏旧代码,所以委员会非常严格,不喜欢改变已引入特性的路线。
  这个问题没有正确的答案,但无论如何,一个经过充分讨论的主题要比仓促的举动更好。
  ABI
  随着新特性列表的不断增长,从头开始修复C设计中的旧问题可能是很诱人的主题。但这种语言的原则是不能破坏旧代码,所以委员会非常严格,不喜欢改变已引入特性的路线。
  这个问题没有正确的答案,但无论如何,一个经过充分讨论的主题要比仓促的举动更好。
  缺乏依赖管理工具
  我们可以抱怨C没有交付一个很酷的依赖管理系统。但现实情况是,在可预见的未来,这可能都不会实现。拥有一个标准的包管理器是一个艰难的选择,尤其是它必须处理如此多的可用C的平台和系统。
  不够安全
  前段时间,你可以读到提到这个问题的一些文章(这篇和这篇):
  谷歌工程师本周表示,Chrome代码库中大约70的严重安全漏洞是内存管理和安全漏洞。
  微软也是如此。由于大部分代码是C或C,所以每个人都指责C不够安全。
  其他问题?
  你在这种语言上遇到的主要问题都有哪些?
  到目前为止,我们已经讨论了一些问题那么如何应对它们呢?有机会解决这些问题吗?
  如何保持理智
  没有完美的编程语言;每种语言都有一些问题。以下是我关于如何处理现代C问题的建议:保持乐观使用最佳指南使用最好的工具跟上最新进展不要打开引擎盖使用你需要的增量变更最后的底线:你的旧代码仍然安全并且可以编译
  保持乐观,语言在不断发展
  没有人愿意使用旧的语法和结构来编写代码。我们已经看到很多关于C11之前的旧版C的抱怨。人们花了将近13年的时间(从主要的C98算起,不包括次要的C03)才提出新的主要版本:C11。现在我们可以很高兴回到了正轨,每三年都会有一些变化。归根结底,你不能说你的语言已经死了。
  虽然某些特性非常庞大,可能会带来混乱或需要学习更多东西,但实际情况其实很简单:在C03之后添加的1000个新页面中的大部分用于标准库。这意味着你可以使用更多助手和子系统,而无需查找第三方库。这绝对会让你的生活更轻松。对于移动语义,你可以依赖库类型,因为它们会为你完成正确的工作。例如,你现在可以安全地返回std::vector并确保它可能被移动甚至被删除,而无需额外副本。至于模板,它变得越来越容易使用。概念让代码更安全,没有像SFINAE这样的技巧。更重要的是,我们有了constexpr和auto,让泛型代码更简单了(几乎就像常规代码一样)。至于安全性:在这里查看C指南的安全配置文件的自动化工具。CCoreCheck中的新安全规则C团队博客。我们可以期待新的、更好的工具来执行代码分析甚至检测,以尽快发现潜在的安全问题。或者看这篇文章:使用静态分析原理缩小Rust和C之间的差距SunnyChatterjeeCppCon
  使用指南
  如果你对C代码的许多方面都感到困惑,那么你应该查阅C核心指南。它由热心的C开发社区创建,主要编辑是HerbSutter和BjarneStroustrup。
  看这里:
  C核心指南Github
  https:github。comisocppCppCoreGuidelinesblobmasterCppCoreGuidelines。md?fileGuidHjDhgwWw6jPKDcCK
  这里有一个漂亮的网站:
  C核心指南:网站
  https:isocpp。github。ioCppCoreGuidelinesCppCoreGuidelines?fileGuidHjDhgwWw6jPKDcCK
  只需输入你面临的问题(例如returnvalue),你就可以轻松找到建议例如:指南:返回值
  使用这些指南将为你节省大量时间,并且你可以非常快地学习一些好的模式。
  还有工具!
  感谢Clang以及其他平台上的开发速度提升,我们获得了如下工具:ClangTidy(以前是clangmodernise)ClangFormatClangStaticAnalyzerVisualAssistClionResharperCVisualStudio像CCoreChecker这样的工具PVSStudio用于VisualStudio的ClangPowerTools新的C核心检查规则C团队博客C核心指南检查器参考微软文档介绍vcperftimetrace,用于C构建时间分析C团队博客CCoreCheck中的新安全规则C团队博客C和Rust一样安全吗?
  或者查看我关于其他工具的文章:
  C生态系统:编译器、IDE、工具、测试等
  https:www。cppstories。com201910cppecosystem?fileGuidHjDhgwWw6jPKDcCK
  虽然它不像其他语言(主要基于Java或基于。NET)那么好,但它正在变得越来越好。请记住,由于C语法复杂,因此很难实现即时分析代码的工具。
  努力跟上最新进展
  C社区非常活跃。有很多博客、书籍、会议甚至有可能在你所在的城市有本地社区。
  首先,我建议去isocpp。org查看所有事件新闻文章。然后你可以查看MeetingC和有关本地C小组的信息。还有redditcpp,你可以在那里看到一些最棒的C故事。
  还有CppCast一个针对C开发人员的每周播客。
  并参考以下书籍:C编程语言第4版高效的现代C编程:使用C的原理和实践发现现代C:科学家、工程师和程序员的强化课程C之旅(C深入系列)第2版
  你还可以查看推荐的C资源列表:
  Bartek的编程博客:
  https:www。cppstories。compresources?fileGuidHjDhgwWw6jPKDcCK
  细节太多了?
  C如此强大的原因之一是它允许你实现非常接近底层的代码。你可以控制所有细节、内存布局、性能优化等同时,这些能力增加了语言的复杂性。
  不过,如果你不需要走那么远,你可以停留在相对较高的抽象级别。
  例如,你不需要编写可选类型,因为你可以使用标准库中的std::optional。如果你不想涉及低级别和容易出错的联合类型,你应该意识到std::variant是一个安全的选项。
  使用你需要的东西
  C是一种多范式语言;你可以以多种不同的方式使用它。最近,我读到了一条有趣的评论,说Cpp程序员在不接触模板元编程甚至异常等高级内容的情况下,也能持续多年表现出色。这在很大程度上取决于项目的代码风格。
  例如,即使像谷歌这样的公司也限制了C的特性,比如说他们不使用异常。
  如果你不是库开发人员,你可能不会遇到自定义移动运算符或移动构造器的麻烦。同样,高级元编程的内容也可能不是你的代码的关键部分。
  增量变更
  如果你是从头开始或只有一个小的代码库,那么转到C1114应该相对容易一些。可是20年(或更久!)前开始创建的上百万行代码呢?
  只需一步一步来就行了。
  至少对于新代码,你应该开始使用现代C。此外,通过应用童子军规则,你可以改进你所接触的那些代码。
  这可能会带来一些混合代码,但还是比只保留老旧风格要好。
  最后的底线:你的旧代码仍然可以编译
  C规范越来越大的原因之一是该语言向后兼容。所以委员会通常会引入新特性,但很少删除旧的东西。所以你的代码仍然可以编译。如果你不想前进,不想使用新的东西,那么你还是可以保持当前的风格。
  有时你会收到一些关于不推荐使用的内容或删除特性的警告(如C17中的autoptr),但即使在这种情况下,你也可以将编译器切换到一些较旧的C标准。
  总结
  这篇文章有一些抱怨,也有一些美化。我试图找出这种语言及其演变过程中存在的各种问题,以及一些积极的改进迹象。虽然我们可以抱怨复杂性、变化的速度等,但我认为我们不能说这种语言已经死掉了。这是好事!:)
  我认为你不必快速追逐新特性并立即重写现有代码。试着跟上进展,使用真正改进你工作的特性,你的代码应该逐渐改进并变得更加现代化(这是可以定义的,请参阅meetingcpp的相关文章http:meetingcpp。comindex。phpbritemswhatdoesmoderncreallymean。html?fileGuidHjDhgwWw6jPKDcCK)。在采用C11141720的新特性时,你的方法是什么?你使用C的主要问题是什么?你在工作中使用现代C吗?

肺鱼为什么可以不吃不喝活上四年?肺鱼是一种神奇的物种,与一般的鱼类,它们出来能够用鳃呼吸外,还能够用鳔进行呼吸,所以在没有水的情况下它们也可以生存下来,即使离开水面不吃不喝,肺鱼也可以存活35年时间。肺鱼正如它的高血压病人防止血压升高,应该注意什么方面?如果都没有找到让血压升高的根本原因,何谈治疗高血压!西医用药只是控制症状,治标不治本,因此高血压在西医来说终生用药,无法治好!很多患者也只能无奈的接受我们老祖宗流传下来一句,有病了为什么程序员薪资都是说税前?其他行业都没见这样的呢?很简单,因为程序员怕给老板骗啊。我在东莞塘厦找编程工作的时候,当时刚毕业,年轻没经验,讲好5K的工资,但最后要扣掉所得税,薪资掉了一大截,心理超级不爽。后来学聪明了,在网上投简历,预告2023。03。31千山落樱盛会开启!奥拉星领域新战场!1新亚比千山落樱之辉夜樱生命值得敬畏,亡灵同样不应被轻视。那么,就由我来守护归于彼岸的魂灵。(1)夜樱挑战通关绯色星空即可开启夜樱光启进化,获得超强神宠千山落樱之辉夜樱。(2)夜樱颤栗Demonologist下载中文好友组队攻略,主播都在玩的抓鬼游戏颤栗Demonologist(恶魔学家)是一款合作式恐怖游戏,可以单人或最多4人组队玩。玩家们的目标是在游戏中识别出被诅咒地的恶灵类型,并使用玩家自身的设备将其驱除。目前游戏已经在国风功夫游戏师父正式登录Steam国区售价139元CNMO新闻2022年2月8日,一款名为师父的国风动作游戏正式上架了索尼PlayStation平台,该作的PC版本由Epic商城独占。在发布之后,师父凭借着精致的游戏设计和独特的风最后的生还者PC重制版预载已开启今晚10点解锁最后的生还者PC重制版预载已经开启,之前在Steam预购的玩家可提前下载游戏,以便节约时间,在解锁后快速开玩。Steam商店地址据Steam页面显示,最后的生还者PC重制版将于3月王者荣耀新手福利,猴子攻略它来咯!头条创作挑战赛一技能介绍及解析1。被动大圣神威释放技能后强化普攻并且初始就拥有20的暴击率2。一技能护身法咒抵挡一次技能并获得护甲,开启时增加移速3。二技能斗战冲锋位移技能并且触碰武汉万国公园好玩么?2013年,有一组武汉神秘金字塔的照片在网上刷屏。这些建筑,其实名叫万国公园,万国公园和磨山隔着东湖遥遥相望,很多人形容它弃置古堡杂草丛生墙皮脱落。1996年,这里打算仿世界之窗做借呗欠款逾期261天了,为什么既不打电话催债,也不联系我?故意的,违约金和利息递加,你的2万变4万了。这是支付宝的套路。就几万块,又有征信系统和法律的撑腰,它不怕你们不还,它只是在追求利益最大化而己。这是上征信的,不催不代表不进黑名单真假都说阿里巴巴福利好,为什么有人拿到offer却不愿意去阿里?没有都说的福利好,所以没去为什么地球百分之8人类之,熟悉自己国家语言哈哈哈哈呼呼呼呼就目前来说拿到阿里的offer还是比较优秀的,有大厂的背景很可以的,毕竟牌子带在身边看看好的装备
河南洛阳高考女孩被害案,到底怎么样了,为何无最新进展情况?河南洛阳18岁的高三姑娘冯梦月很高兴,因为高考成绩出来了,她考了601分,601分的好成绩,让她距离自己理想的大学又进了一步。在高兴之余,冯梦月绝对没能想到,一场大灾难即将到来。7天气预报今日21号暴雨大雨中心确认,60年一遇冷三伏?农谚咋说导读天气预报今日21号暴雨大雨中心确认,60年一遇冷三伏?农谚咋说老话说热在三伏,冷在三九这说明了夏季最热的时候在三伏天,而冬季寒冷在三九天的时候。如今正是今年入伏之后了,今天是7同样是演宋美龄,把刘涛邬君梅俞飞鸿放一起看,差别就出来了近代历史剧一直都是影视剧的创作源泉。有人说,如果要拍摄宋美龄的故事,就算剧本不够出色就算导演拍摄手法不够精妙,就算演员演技不佳,也一定会是一出精彩绝伦的戏。宋美龄作为民国第一夫人,28张活久见的图片,不会飞的鸟,绿色的流星1生活在阿拉斯加的树蛙,它们在冬天时全身都被冰冻,到了春天就会解冻并活过来。2生活在新西兰的不会飞的鸟。31910年,渔民在美国加利福尼亚州圣卡塔利娜岛捕获的一条3500磅的巨型太史殿林惹事,聂磊加代帮忙因为聂磊也知道,完事儿以后咱这边拍拍屁股回青岛了,人家还得在东莞发展。这时一辆宾利就拐进来了,白沙强当时一瞅坏了,还真是陈国强来了。大宾利往这儿一停,后边儿全是黑色的虎头奔,陈国强微信8。0。26新版本来袭!这7个隐藏功能你都知道吗?分享最实在的玩机技巧,洞察最前沿的科技资讯!大家好,这里是手机科技园!就在昨天,iOS微信更新了8。0。26新版本,经过这一天的深度体验,发现了7个隐藏功能,下面跟着我一起来探索一2022年中国公司市值增长50强年中观察中国制造出位在此次榜单中,中国先进制造类企业的优势开始凸显。一如既往,巴伦周刊中文版针对中国公司的市值变动,在2022年中推出了年中观察。我们依旧使用过去两年的中国公司市值增长50强的指标体系美国欠中国的9000亿美元,未来会赖掉吗?大家有没有想过,美国欠中国的钱,未来会赖掉吗?如果美国赖账了,又会发生怎样可怕的事情呢?据美国财政部公布的报告,2022年美国国债首次突破30万亿美元,创历史新高,数字较2019增还记得宝贝计划里的马修吗?从小婴儿变成帅小伙了?哈喽,小橘子们!还记得电影宝贝计划吗?还有谁没为其中的小宝贝哭过笑过呢宝贝计划是2006年上映的喜剧电影,由成龙古天乐和蔡志强主演。蔡志强,英文名叫马修(Matthew),2005克宫重磅表态!俄伊交易将放弃美元结算,美元霸权遭致命一击不知不觉,俄乌冲突已经持续了五个多月,这其中少不了美国及其西方势力的供火。然而,不管俄乌冲突有没有发生,美国从头到尾就一直在动歪脑筋,想着如何从经济上打压俄罗斯。让美国没想到的是,毛泽东与联合国,只要有一个小小的台湾,我们就不进去文胡新民1942年1月1日,正在与轴心国作战的26个同盟国家的代表在华盛顿会面,签署了联合国家宣言。这份文件第一次正式采用了罗斯福总统提出的联合国方案。1945年,50个国家的代表
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网