c语⾔跨平台编译,弃⽤MSVC编译器,使⽤跨平台编译器CLang,
让我们学习C语⾔更加规范...c语言编译器怎么用?
MSVC和CLang编译器都是⽀持UTF8编码的,也就是说是⽀持中⽂命名⽅式的.
下⾯说⼀下他们之间的区别吧!
⽣成最终⽂件编码不同
MSVC不管源C⽂件是GBK还是UTF8编码,⽣成的exe⽂件都是GBK的.⽽windows控制台本⾝就是GBK编码,所以⼀般不会出错.
CLang⽣成的最终exe⽂件编码是根据源C⽂件编码⽽定的,如果源C⽂件是GBK,就⽣成GBK的.如果源C⽂件是UTF8的就⽣成UTF8的.但GBK的源C⽂件不⽀持中⽂命名,我们需要使⽤英⽂命名⽅案,这⽆形增加我们的学习成本.⼀般使⽤UTF8的源C⽂件编码即可,完美⽀持中⽂命名⽅案.
错误或警告提⽰
在源C⽂件为UTF8的情况下,Clang的错误提⽰更加严格,但提⽰都是英⽂的,不过没有关系,翻译⼀下即可.(完美⽀持最新C/C++标准).
MSVC的错误提⽰不是很智能,很多错误提⽰都显⽰不出来,不利于学习C标准(MSVC对C/C++标准⽀持不完善).
兼容性
MSVC有很多⽼的项⽬都可以正确在win7系统上运⾏,win10也是没有问题的,但不⽀持Linux和MAC系统.
CLang兼容性没有MSVC好,如"firefox浏览器"使⽤的是Clang编译的,在win7系统下运⾏不怎么好,在win10⽆问题,但它⽀持linux和MAC系统.
这样⼦说并不代表CLang不⽀持win7,它不仅完美⽀持win7还⽀持XP,只是由于我们在编辑软件的时候使⽤的是win10的SDK,⾃然对win7不友好.
如:OBS Studio在win7系统下兼容性不怎么好,且win7已经停⽌更新了,更多的⼈会选择win10.只是由于很多⼈不会优化win10,导致体验不好.
Clang兼容GCC和MSVC的标准代码,反过来GCC不兼容CLang,MSVC也是不兼容Clang的标准代码的.[Clang⽀持windows/linux/mac平台]
MSVC只⽀持Windows平台,且只对C++和Windows SDK⽀持友好,像C或其他东西,⽀持的效果不⾏.
另外说⼀下GCC这个编译器,真正的全能,⼏乎⽀持所有语⾔,但由于⽀持的太多了,⽣成效率和运⾏速度不如MSVC和Clang.
Debug和Release⽂件⼤⼩
Debug调试的时候,⽣成的⽂件体积,MSVC的⼤⼩是CLang的是1.5倍,我们测试了MFC和控制台应⽤都是这样⼦.
Release⽅⾯,由于MSVC和Clang编译器底层都是使⽤的Windows专⽤的CL编译,体积MSVC⽐Clang只⼤1kb,⼏乎可以说是相同的⼤⼩.
所以Clang更多的体现是在调试Debug的时候,可以更有效的发现问题并去解决,节省了⾮常宝贵的时间.