style="text-indent:2em;">大家好,关于如果仅考虑Windows平台,不用msvc而去用gcc的理由有哪些很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于windows不建议gcc的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!
本文目录
如果仅考虑Windows平台,不用msvc而去用gcc的理由有哪些
1、大部分跨平台的大型C程序(如ffmpeg)早已完全使用C99标准编写,而msvc的编译器CL直到2015年才较好地支持了C99;
2、msvc的侧重点是对C++标准的支持以及对WindowsSDK的支持,而不是对C语言的支持。
3、msvc的编译器很难用于生成和环境无关的代码,用来编译像Bootloader、系统内核之类的特殊程序时会有麻烦。
4、msvc的编译器CL的命令行参数和gcc、clang等几乎完全不兼容,所有的makefile和其他脚本都必须专门为其做较大改动。
5、msvc工具链(编译器、链接器、nmake等)的ABI和gnu工具链的只有单向兼容,无法链接由gnu工具链生成的库。
windows下的gcc编译的c源文件为什么无法运行
你这明显是telnet到linux主机编译的,linux编译的cpp不能在windows上运行。因为c++不是跨平台的语言,需要在相同的平台上编译才能运行。如果你想在windows上运行,需要找gcc的windows版本在windows下编译,或者用vc编译器在windows下编译,就可以了。
为什么大学C语言课不用linux的gcc编译器上,而是用vs呢
答主有幸,大学正好学过C语言,现在从事的也正好是C语言相关的工作。我来回答你这个问题。
我认为,大学C语言课程不用Linux的gcc编译器,主要原因有以下几个方面。
可以快速上手,无需理解编译原理我上学那会儿,使用的还是vc6.0+,一款很古老的IDE,一个框写代码,上面点一下是调试,再点一下是运行,非常傻瓜的操作,简单明了,上手十分简单。
一切都是以图形化的界面操作,直观清晰。无需去记gcc的复杂编译命令,不必了解从代码编译成为二进制字节码经历了哪四个阶段。更不用去掌握Makefile如何去编写。可以把更多的注意力集中在C语言本身。而不必花更多的精力去学习C语言以外的东西(如果是Linux+gcc的话,至少需要掌握简单的Linux操作命令,以及gcc编译,gdb调试等,这些东西学习成本不比学习C语言低,在大学有限的课程里,没有那么多的时间去学习这些)。
考试机试的环境是VC(VS),与考试环境统一我们学C语言考试时,期末考试直接是省二级C语言考试,后面又自己考了国家级C语言二级。不管是省二级还是国家二级,机试部分的编程环境,就是VC(当时的环境,现在不知道有没有改)。
因此,在平时教授课程的过程中,就让学生习惯这种开发环境,在考试的时候,就无需有重新熟悉开发环境的成本,可以快速进入状态。试想一下,如果平时上课使用VS,结果到了考试甩给你一套Linux环境,估计直接就懵逼了。
历史原因,长期以来的传统大学里教C语言的老师大部分都是一些年龄比较大的(年轻人比较少),在他们执教数十年的生涯里,用的一直是VS系,很多老师甚至都很少接触Linux。在他们脑海中,根深蒂固的就是认为C语言就是应该这么学的。
我之前曾经看过侯捷大神(就是翻译《EffecticeC++》的那位大佬)出的一个讲C++STL源码的视频,用的居然也是VC6.0,实在是有些不可思议。
因此,大学C语言课程不用Linux的gcc编译器,主要是出于以上三个方便的考虑。希望我的回答能帮到你。
as和gcc的区别
as网络语就是爱师,师就是师父。GCC(GNUCompilerCollection,GNU编译器套件),是由GNU开发的编程语言编译器。它是以GPL许可证所发行的自由软件,也是GNU计划的关键部分。
GCC原本作为GNU操作系统的官方编译器,现已被大多数类Unix操作系统(如Linux、BSD、MacOSX等)采纳为标准的编译器,GCC同样适用于微软的Windows。GCC是自由软件过程发展中的著名例子,由自由软件基金会以GPL协议发布。
GCC功能与作用:
1、预处理
命令gcc首先调用cpp进行预处理,在预处理过程中,对源代码文件中的文件包含(include)、预编译语句(如宏定义define等)进行分析。
2、编译
用GCC编译C/C++代码时,它会试着用最少的时间完成编译并且编译后的代码易于调试。易于调试意味着编译后的代码与源代码有同样的执行顺序,编译后的代码没有经过优化。
3、连接
当所有的目标文件都生成之后,gcc就调用ld来完成最后的关键性工作,这个阶段就是连接。在连接阶段,所有的目标文件被安排在可执行程序中的恰当的位置,同时,该程序所调用到的库函数也从各自所在的档案库中连到合适的地方。
4、汇编
汇编过程是针对汇编语言的步骤,调用as进行工作,一般来讲,.S为后缀的汇编语言源代码文件和汇编、.s为后缀的汇编语言文件经过预编译和汇编之后都生成以.o为后缀的目标文件。
文章到此结束,如果本次分享的如果仅考虑Windows平台,不用msvc而去用gcc的理由有哪些和windows不建议gcc的问题解决了您的问题,那么我们由衷的感到高兴!