中美5G两大方案究竟有啥区别?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了中美5G两大方案究竟有啥区别?相关的知识,希望对你有一定的参考价值。

5G到底是什么?

5G的全称是第五代移动通信技术(5th generation mobile networks),

1G(语音通话):第一代(1G)于20世纪70年代末推出,80年代初投入使用。1G网络是利用模拟信号使用类似AMPS和TACS等标准在分布式基站(托管在基站塔上)网络之间“传递”蜂窝用户。

2G(消息传递):在20世纪90年代,2G移动网络催生出第一批数字加密电信,提高了语音质量、数据安全性和数据容量,同时通过使用GSM标准的电路交换来提供有限的数据能力。

3G(有限数据:多媒体、文本、互联网):20世纪90年代末和21世纪初,3G网络通过完全过渡到数据分组交换,引入了具有更快数据传输速度的3G网络,其中一些语音电路交换已经是2G的标准,这使得数据流成为可能,并在2003年推出了第一个商业3G服务,包括移动互联网接入、固定无线接入和视频通话。

4G和LTE(真实数据:动态信息接入,可变设备):4G充分利用全IP组网,并完全依赖分组交换,数据传输速度是3G的10倍。由于4G网络的大带宽优势和极快的网络速度提高了视频数据的质量。LTE网络的普及为移动设备和数据传输设定了通信标准。



而5G相比于4G则增加了高速率、泛在网、低功耗、低时延的特点,从而具备超大网络容量,提供千亿设备的连接能力,满足物联网通信。目前,5G时代定义了以下三大应用场景:

eMBB:增强移动宽带,顾名思义是针对的是大流量移动宽带业务;

URLLC:超高可靠超低时延通信,例如无人驾驶等业务(3G响应为500ms,4G为50ms,5G要求0.5ms);

mMTC:大连接物联网,针对大规模物联网业务;



而5G标准则被分成了分成了R15、R16两大阶段,其中R15又分为三部分,R15 NR NSA(新空口非独立组网)标准2017年12月完成,R15 NR SA(新空口独立组网)标准2018年6月完成,后边的5G Late Drop于今年6月份冻结,而R16标准完成时间则要到2020年6月,到那个时候,5G所有标准才算完成。R15标准主要是5G组网方式,而R16主要是面向智慧工厂、无人驾驶等垂直领域应用。



如今完成的R15阶段的NSA和SA一直被人所广泛热议。

为什么会有NSA也就是非独立组网出现呢?不同于以往2G/3G/4G整体演进,5G时代核心网、基站被分开了,所以就多出了多种组合方式。R15 Late Drop标准也是为 NSA 增加了更多的组合方式,可以令移动运营商可以更便捷部署5G网络,主要是增加NSA非独立组网模式,转换为5G作为核心网,增加了5G基站为主,4G基站为辅;或者4G基站为主,5G基站为辅两种状况。此外还支持NR-NR双连接,意思就是手机同时连接到两个不同频段上,低频作为覆盖层,高频充当扩容层,既保证了信号覆盖又能提高传输速率。



目前商用的5G手机中只有华为手机支持SA组网,SA组网是未来发展趋势,但并不代表NSA是假5G,目前中国运营商很多都是用的NSA,5G的发展是由NSA向SA过渡的。明年所有手机都会支持NSA/SA,建议大家明年再买!

5G两大方案:Sub-6G和毫米波

5G的建设方式有独立组网和非独立组网两种,那你想要建设什么样的5G,其实也有两种,也就是我们说的5G两大方案:Sub-6G和毫米波。

这两种方案是根据5G所使用的不同频谱来划分的,频谱是频率谱密度的简称,手机通讯信号传输都是通过一定频率传输的。

根据2017年12月发布的 V15.0.0版TS 38.104规范,5G NR的频率范围分别定义为不同的FR:FR1与FR2。第一种(FR1)的重心放在6GHz以下的电磁(EM)频谱上(“低到中频段频谱”,也称为“Sub-6”),主要在3GHz 和4 GHz频段。第二种FR2侧重于24~300GHz之间的频段(“高频频谱”或“毫米波”)。



5G NR的频段号以“n”开头,与LTE的频段号以“B”开头不同。目前3GPP指定的5G NR频段如下:

① FR1(Sub-6GHz)范围内:



② FR2(毫米波)范围内:



波长较短的毫米波会产生较窄的波束,从而为数据传输提供更好的分辨率和安全性,且速度快、数据量大,时延小。其次,有更多的毫米波带宽可用,不仅提高了数据传输速度,还避免了低频段存在的拥堵(在研究毫米波频率应用在5G之前,该频段的主要运用在雷达和卫星业务)。5G毫米波生态系统需要大规模的基础建设,但可以获得比4G LTE网络高20倍的数据传输速度。

高通在MWC的展示中,通过运用毫米波技术,达到了4.63Gbps的网络传输速率,这是一个在4G时代无法想象的快速。



但受制于无线电波的物理特性,毫米波的短波长和窄光束特性让信号分辨率、传输安全性以及传输速度得以增强,但传输距离大大缩减。

根据谷歌对于相同范围内、相同基站数量的5G覆盖测试显示,采用毫米波部署的5G网络,100Mbps速率的可以覆盖11.6%的人口,在1Gbps的速率下可以覆盖3.9%的人口;而采用Sub-6频段的5G网络,100Mbps速率的网络可以覆盖57.4%的人口,在1Gbps的速率下可以覆盖21.2%的人口。





谷歌测试结果对比,上为毫米波覆盖,下为Sub-6覆盖

可以看到,在Sub-6下运营的5G网络覆盖率是毫米波5倍以上。而且建设毫米波基站,需要大约在电线杆上安装1300万个,将花费4000亿美元,如此才能保证28GHz频段下以每秒100 Mbps速度达到72%的覆盖率、每秒1Gbps的速度达到大约55%的覆盖率。而Sub-6只需要在原有4G基站上加装5G基站即可,大大节省了部署成本。

目前因为美国政府尤其是军方将大量3-4GHz范围内的频段用于军用通信和国防通讯,迫使美国只能选择押注毫米波。



中国选择押注Sub-6G,按3GPP关于5G的频谱范围规范,联通、电信舍弃了之前的频谱资源,换来了目前产业成熟度最高的3.5GHz资源(3400MHz-3500Mhz分配给中国电信,3500MHz-3600MHz分配给中国联通);移动则在2.6GHz频段和4.9GHz频段上持续深耕。

另外,中国虽然押注Sub-6G,但是并没有放弃对毫米波的探索,充分贯彻了鸡蛋不放在一个篮子里的理念。

中美5G建设状况

刚才我们说道,美国5G毫米波存在缺陷,所以目前Sub-6G中的3Ghz和4Ghz之间的频谱波段主导了全球的5G活动,因为相比于毫米波频谱,3Ghz和4Ghz的传播范围得到了改善,能用更少的基站数量提供相同的覆盖范围和性能。

而中国也成为了全球5G的领先者,并且有望成为5G全球经济的领导者,构建5G全球标准:

中国计划部署第一个广泛使用的5G网络,其首批Sub-6网络服务将于2020年投入使用。先发优势可能会推动智能手机和电信设备供应商以及国内半导体和系统供应商的市场大幅增长。因此,中国的互联网公司将为其国内市场开发基于5G速度和低延迟性能的服务和应用程序。随着5G在全球以类似的频段部署,中国的智能手机和互联网应用及服务很可能占据主导地位,即便它们被美国市场排除在外。中国在5G领域的发展,将重现美国在4G领域的辉煌。

在海外,中国一直在与国家和外国公司保持合作,以扩大其5G的影响力。在欧洲,尽管美国官员要求盟友阻止中国公司,华为和中兴仍然正在为个别国家的5G网络提供建设的服务,并签署了多项5G合同。此外,中国在“一带一路”计划中投入了大量时间和资源,包括推动中国建设的网络基础设施,以提供跨越整个路线的连通性。这一策略已经取得了一些成功:在2018年第三季度,华为在全球通信设备市场占有28%的份额,比2015年上升了4个百分点。随着更多地区的5G网络依赖中国通信设备推出,预计华为的市场份额将继续增长。这些努力将使中国能够推广其首选的5G网络标准和规范,并将在未来主导全球的5G产品市场。

而美国还在思考如何完全解决毫米波的缺陷,目前美国试图通过大规模MIMO和波束赋型改善毫米波的传播效率。



大规模MIMO是一种天线阵列,它将极大地扩展设备连接数和数据吞吐量,并将使基站能够容纳更多用户的信号,并显著提高网络的容量(假设存在多个用户射频路径)。波束赋型是一种识别特定用户的技术,该技术可以最有效的把数据传递给特定用户并减少附近用户的干扰。虽然这些技术可以改善毫米波的传播效率,但是在更大范围内保持连接稳定仍然存在挑战。在将毫米波作为一种更通用的无线网络解决方案部署之前,还需要投入大量的时间和研发成本来解决毫米波的传播特性问题。



除此之外,美国还在思考是否要转投Sub-6G方案,跟着中国走。

加速在美国进行5G 6 Sub-6 GHz的部署。向复杂的多频段收发器添加新频段大约需要两年时间,美国将能够通过利用市场上已有的子组件和设备来实现更成熟的频谱使用,例如使用现有的高通产品来实现中国5G系统使用的频段,从而避免花费额外的时间来弥补追赶这两年在5G研究上的落后。

然而即使通过共享频谱的方式,也需要花费5年:

想要允许Sub-6频段的商用,可以重新规划政府的频段或者共享这些频段,但这两个方式的时间都相对过长。清除频谱占用(将现有的用户和系统迁移到频谱的其他部分),然后通过拍卖、直接分配或其他方法将其释放到民用部门所花费的平均时间通常在10年以上。共享频谱是一个稍微快一点的过程,因为它不需要对现有的用户进行彻底的改革,但即使是这样,也要花费5年以上的时间。



可以说目前美国已经陷入了5G的困局之中,而中国在5G的发展上正走得十分稳健。工信部近日表示,目前各地所推进的基本上为非独立组网的5G网络,预计明年我国正式大规模投入建设独立组网的5G网络。

中国信息通信研究院的《5G产业经济贡献》认为,预计2020至2025年,我国5G商用直接带动的经济总产出达10.6万亿元,间接拉动的经济总产出约24.8万亿元,5G将直接创造超过300万个就业岗位。

最为重要的是,中国将可能成为全球5G的领导者,重现美国在4G时代的全球经济主导权。



数据来源:美国国防部国防创新委员会发布了《5G生态系统:对美国国防部的风险与机遇》(《THE 5G ECOSYSTEM: RISKS & OPPORTUNITIES FOR DoD》)报告

参考技术A

两国的5G方案至少包括三个部分:实施机构、目标人群、最终预想,那方案最大的差别也在其三。


一、我国给予5G发展足够的帮助,美国借由私营企业主导。


我国的5G技术的发展应该属于世界前列,现已经让部分大型城市投入5G商用试运行,产生了不少好效果,尤其是在工业制造业中的物物联网层面上。我国的三大运营商也在想尽一切办法宣传推广,期望更多民众能认识5G并给予软性支持,即更换5G套餐。我国的相关私营科技企业,还在于每年投入大量的资金用于5G技术研究,恐他国超越后对我国进行恶意封锁。 由此可以看出,国内从上到下都在齐心协力去办好大事,即将5G发展好。

美国因为特有的国家性质,在5G技术研究层面,联邦几乎没有资金和权限去号召大家“力往一处使”地办好5G开发,几乎都在仰仗一些实力强劲的科技公司能做领头羊,但事与愿违,唯利是图的商人怎么会做明显低收益的事情,毕竟我国的华为公司所生产的5G设备性价比太高,美国科技公司进入5G市场后,从中得不到什么便宜,这也是为什么美国至今还没有像样的5G技术开发出来。


二、我国将5G面向14亿民众,美国瞄准上层的精英阶层作为目标用户。


我国的5G技术有着广阔的前景,也有着宏大的目标,即将5G网络接入每一个民众的家中,让每一个人都在互联网权利上享受到切实的平等。笔者相信这种美好的期望一定会实现,毕竟曾经的我们做到了公路村村通、电力村村达、网络村村到,5G技术的普及只不过是时间问题,在完成大面积脱贫后,或许是5G应用普及之时。

美国是典型的地广人稀的社会,几乎每个美国人都会有一辆汽车作为代步工具,这就导致美国的基础设施不能像小国家一样完善,联邦没有钱就导致了美国乡野的基础设施很差。即美国农村的通信信号都不好,还期望美国农民能享用基础设施建设要求更高的5G网络通讯吗?对美国通讯公司来说,在考虑怎么实现乡野通讯时,还不如将大城市的5G建设好,有钱人的钱财更好赚。


三、我国打算借5G技术打破在通信领域被他人掣肘的憋屈,美国想要维护“世界第一强国”的虚伪称号。


我国的通讯标准一直被压迫,从1G到3G都是落后于他国,好不容易在4G网络制式上追平国外水平,这次5G是铆足劲想要领先世界,有目标才有无限动力。反观美国,特朗普公开提出5G建设,难道不是被我们逼急怕丢了“世界第一强国”的面子在“胡言乱语”吗?毕竟他们国内的民众在此之前,似乎还对5G一无所知。因为5G方案在这三个主要因素存在的巨大差异,注定两国在5G发展上南辕北辙,笔者相信不久之后就能看到5G技术在我国的腾飞。

参考技术B 中国的5G技术比美国先进,而且美国的5G技术,需要运营商自己付钱来进行使用,中国则不需要,再加上中美5G方案的频谱运用也不同。 参考技术C 其实不能说是中美5G方案不同
全球只有一个5G标准
不能说是中美有不同的5G标准
只是现在中国美国的频谱使用情况不同
中国现在主要推动中频段厘米波 覆盖相对好一些 带宽大的话会有100-200兆左右
美国主要推动高频道毫米波 带宽更大 1G左右
速率很高 但是覆盖不好
美国中频已被其他服务使用 以后也会调整慢慢用到5高G上
参考技术D 中国在5g上选择Sub-6G,美国选择毫米波,这两种在5g网络的覆盖率方面是不一样的,中国这个选择要更广

g++和gcc有啥区别?

【中文标题】g++和gcc有啥区别?【英文标题】:What is the difference between g++ and gcc?g++和gcc有什么区别? 【发布时间】:2010-09-15 09:56:42 【问题描述】:

g++和gcc有什么区别?一般c++开发应该使用哪一个?

【问题讨论】:

【参考方案1】:

gccg++ 是 GNU Compiler Collection(曾是 GNU C Compiler)的编译器驱动程序。

尽管它们会根据文件类型自动确定要调用的后端 (cc1 cc1plus ...),除非被 -x language 覆盖,但它们还是有一些区别。

它们的默认值可能最重要的区别是它们自动链接到哪些库。

根据GCC的在线文档link options和how g++ is invoked,g++相当于gcc -xc++ -lstdc++ -shared-libgcc(第一个是编译器选项,第二个两个是链接器选项)。这可以通过使用-v 选项运行两者来检查(它显示正在运行的后端工具链命令)。

【讨论】:

从这个答案中,我得出结论,实际上 g++ 命令只是带有一堆标志的 gcc .. 那么为什么在 linux 中有两个不同的二进制文件(大小大致相同)用于 gcc 和 g++? .我们不应该只有一个二进制文件和一个符号链接(或类似的东西)吗? @Uchihaltachi 这些文件是硬链接,当它们启动时,它们会检查 argv[0] 以查看应该使用哪个调用。这在核心 UNIX 实用程序中很常见。 文档中哪里说g++ is equivalent to gcc -xc++ -lstdc++ -shared-libgcc?它只是说它将 .c、.h 和 .i 视为 C++ 并自动链接 libstdc++。如果发布的命令是这种情况,则具有有效 C++ 代码的 .txt 文件将编译,但会返回不支持的文件格式错误。 这个答案是错误的。试试# include <iostream> int main ( ) std :: cout << "hello" << std :: endl ; 我希望有人可以通过gcc命令行而不是g++编译它。 here 如果仍有疑问。【参考方案2】:

对于 c++,你应该使用 g++。

它是同一个编译器(例如 GNU 编译器集合)。 GCC 或 G++ 只需选择具有不同默认选项的不同前端即可。

简而言之:如果您使用 g++,前端会告诉链接器您可能想要链接 C++ 标准库。 gcc 前端不会这样做(如果您传递正确的命令行选项,它也可以与它们链接)。

【讨论】:

+1 我的 GNU/Linux gcc 手册页也说:“当你编译 C++ 程序时,你应该调用 GCC 作为 g++。”【参考方案3】:

一个显着的区别是,如果您将.c 文件传递​​给 gcc,它将编译为 C。

g++ 的默认行为是将 .c 文件视为 C++(除非指定了 -x c)。

【讨论】:

(晚了,但为了后代,)正如其他答案所指出的,这绝不是“唯一显着的区别”,除非读者对知名度的定义有偏差。【参考方案4】:

虽然 gcc 和 g++ 命令做的事情非常相似,但 g++ 被设计为您在编译 C++ 程序时调用的命令;它旨在自动做正确的事情。

在幕后,它们实际上是同一个程序。据我了解,两者都根据文件扩展名决定将程序编译为 C 还是 C++。两者都能够链接到 C++ 标准库,但默认情况下只有 g++ 这样做。因此,如果您有一个用 C++ 编写的程序,并且碰巧不需要链接到标准库,那么 gcc 会碰巧做正确的事情;但是,g++ 也会如此。所以真的没有理由不使用 g++ 进行一般的 C++ 开发。

【讨论】:

【参考方案5】:

GCC:GNU 编译器集合

引用 GNU 编译器支持的所有不同语言。

gcc:GNU C 编译器g++:GNU C++ 编译器

主要区别:

    gcc 将编译:*.c\*.cpp 文件分别为 C 和 C++。 g++ 将编译:*.c\*.cpp 文件,但它们都将被视为 C++ 文件。 此外,如果您使用 g++ 链接目标文件,它会自动链接到标准 C++ 库中(gcc 不会这样做)。 gcc 编译 C 文件的预定义宏更少。 gcc 编译 *.cppg++ 编译 *.c\*.cpp 文件有一些额外的宏。

编译*.cpp文件时的额外宏:

#define __GXX_WEAK__ 1
#define __cplusplus 1
#define __DEPRECATED 1
#define __GNUG__ 4
#define __EXCEPTIONS 1
#define __private_extern__ extern

【讨论】:

可以通过-lstdc++参数链接gcc中的std C++库。 'gcc' 和 'g++' 之间的区别不仅仅是标准库,所以gcc -lstdc++ 仍然无法获得与g++ 相同的行为。我们将所有特定于语言的行为放入其自己的驱动程序中是有原因的,这就是它的用途。 :-) 我的评论不仅仅是在谈论链接......这就是重点。即使只是将讨论限制为链接(您的答案不是),用户仍然将无法通过仅指定 -lstdc++ 来使用整个 C++ 标准库,因为将会缺少依赖项关于数学、RTTI 和异常信息。给定的测试用例是否链接或失败将取决于操作系统以及测试用例使用了哪些 C++ 功能,这也是为什么所有这些知识都内置到 g++ 驱动程序中而不是留给用户自己弄清楚的原因. 相信我,我们经常讨论这个问题,通常是当 Linux 用户试图将他不完整的 Makefile 移动到另一个平台时。 :-) g++ 链接阶段在其他操作系统上比gcc -lstdc++ 做得更多,尤其是当目标是嵌入式平台时。幸运的是,这就是我们首先发布 g++ 的原因。 规范字符串被构造为特定于编译器,而编译器又特定于操作系统和目标。因此,如果您在(例如)针对嵌入式系统的交叉编译器上运行-dumpspec,您将看到差异。不仅仅是链接器的差异......这也是您的答案(预处理器宏、包含路径、多个运行时库)。我们似乎在谈论对方,但作为一名前 GCC 维护者,我向你保证,我熟悉前端是什么和不是什么。【参考方案6】:

“GCC”是 GNU 编译器集合的常用缩写词。这既是编译器最通用的名称,也是强调编译 C 程序时使用的名称(以前的缩写代表“GNU C Compiler”)。

在提到 C++ 编译时,通常将编译器称为“G++”。由于只有一个编译器,因此无论在何种语言环境下,将其称为“GCC”也是准确的;但是,当重点是编译 C++ 程序时,术语“G++”更有用。

你可以阅读更多here。

【讨论】:

【参考方案7】:

gcc 和 g++ 都是 GNU 编译器。他们都编译c和c++。不同之处在于 *.c 文件 gcc 将其视为 c 程序,而 g++ 将其视为 c ++ 程序。 *.cpp 文件被认为是 c++ 程序。 c++是c的超集,语法比较严格,所以要注意后缀。

【讨论】:

C++ 是一种不同的语言,而不是 C 的严格超集,因此使用错误的目标语言进行编译很可能会产生意想不到的结果。另请注意,g++ 还将 .cc 解释为仅限 C++ 的文件扩展名。【参考方案8】:

我对这个问题产生了兴趣并进行了一些实验

    我找到了那个描述here,但是很短。

    然后我尝试在我的 windows 机器上尝试 gcc.exe 和 g++.exe:

    $ g++ --version | head -n1 
    g++.exe (gcc-4.6.3 release with patches [build 20121012 by perlmingw.sf.net]) 4.6.3
    
    $ gcc --version | head -n1
    gcc.exe (gcc-4.6.3 release with patches [build 20121012 by perlmingw.sf.net]) 4.6.3
    

    我尝试编译 c89、c99 和 c++1998 简单的测试文件,并且它对我来说工作得很好,与语言匹配的正确扩展名

    gcc -std=c99 test_c99.c
    gcc -std=c89 test_c89.c 
    g++ -std=c++98 test_cpp.cpp
    gcc -std=c++98 test_cpp.cpp
    

    但是当我尝试以这种方式运行“gnu 编译器集合”工具时:

    $ gcc -std=c++98 test_cpp.c
    cc1.exe: warning: command line option '-std=c++98' is valid for C++/ObjC++ but not for C [enabled by default]
    

    但这一个仍然可以正常工作

    $ gcc -x c++ -std=c++98 test_cpp.c
    

    还有这个

    $ g++ -std=c++0x test_cpp_11.cpp 
    

附言测试文件

$ cat test_c89.c test_c99.c test_cpp.cpp

// C89 compatible file
int main()

    int x[] = 0, 2;
    return sizeof(x);


// C99 compatible file
int main()

    int x[] = [1]=2;
    return sizeof(x);


// C++1998,2003 compatible file
class X;
int main()

    X x;
    return sizeof(x);


// C++11
#include <vector>
enum class Color : intred,green,blue; // scoped enum
int main()

    std::vector<int> a 1,2,3; // bracket initialization
    return 0;

调查结果:

    如果查看进程树,那么 gcc 和 g++ 似乎是其他工具的后端,在我的环境中是:cc1plus.exe、cc1.exe、collect2.exe、as.exe、 ld.exe

    如果你有正确的扩展名或设置正确,gcc 可以作为元工具正常工作 -std -x 标志。见this

【讨论】:

【参考方案9】:

g++gcc有什么区别?

gcc 已从单一语言“GNU C 编译器”演变为多语言“GNU 编译器集合”。术语 gcc 在 C 编程的上下文中有时仍指代“GNU C 编译器”。

man gcc

# GCC(1)                     GNU
# 
# NAME
#        gcc - GNU project C and C++ compiler

不过,g++ GNU Compiler Collection 的 C++ 编译器。就像gnatgcc 的Ada 编译器。 see Using the GNU Compiler Collection (GCC)

例如,Ubuntu 16.04 和 18.04 man g++ 命令返回 GCC(1) 手册页。

Ubuntu 16.04 和 18.04 man gcc 声明...

g++ 接受与gcc 大致相同的选项

而默认...

... 使用 gcc 不会添加 C++ 库。 g++ 是一个程序 调用 GCC 并自动指定针对 C++ 的链接 图书馆。它将 .c、.h 和 .i 文件视为 C++ 源文件,而不是 C 源文件,除非使用 -x。该程序在以下情况下也很有用 预编译带有 .h 扩展名的 C 头文件以在 C++ 中使用 合辑。

搜索gcc 手册页以获取有关gccg++ 之间选项差异的更多详细信息。

一般c++开发应该使用哪一个?

从技术上讲,gccg++ 可用于具有适用选项设置的一般 C++ 开发。但是,g++ 默认行为自然与 C++ 开发保持一致。

Ubuntu 18.04 'gcc' man page 已添加,Ubuntu 20.04 继续存在,以下段落:

运行 GCC 的常用方法是在交叉编译时运行名为 gccmachine-gcc 的可执行文件,或者在运行特定版本的 GCC 时运行 machine-gcc-version当你编译 C++ 程序时,你应该调用 GCC 作为 g++

【讨论】:

【参考方案10】:

我在 linux 系统中测试 gcc 和 g++。通过使用 MAKEFILE,我可以定义“GNU make”使用的编译器。我用“C plus plus”的所谓“动态内存”定位功能进行了测试:

int main()

int * myptr = new int;
* myptr = 1;
printf("myptr[0] is %i\n",*myptr);
return 0;

我的电脑上只有g++可以编译成功,而gcc会报错

undefined reference to `operator new(unsigned long)'

所以我自己的结论是gcc并不完全支持“C plus plus”。 似乎为 C++ 源文件选择 g++ 是一个更好的选择。

【讨论】:

你必须做两项工作:1. 选择语言 2. 选择一些库,例如 libstdc++

以上是关于中美5G两大方案究竟有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

中美压力测试,指数飙升

半透明混合中美术术语和程序术语的区别对照表

中美程序员的区别对比

前大厂员工谈中美企业区别,中企不用单元测试,仅靠QA检查代码?

中美程序员的区别对比

TPP协议是啥意思 对中国有啥影响