当前位置: 华文星空 > 知识

像C语言这样的编译型语言能否在不同CPU上,通过相同标准库的编译器,用源代码实现跨平台?

2021-07-01知识

理论上可以,实际上当然也能做到,但毫无现实意义。

原因有很多,例如说: 设计一份兼顾性能、兼容性、通用性、扩展性的API的难度,远高于你的想象

对,我不管实现,光说设计,就已经很难了。最典型的例子莫过于GPU的API,光是成熟的已经有DirectX/OpenGL/Metal/Vulkan等几大套,每一套还有若干个前后向兼容性也不见得多好的大版本,有些还分桌面和移动(嵌入)版。

更何况,这套东西还要兼顾各软硬件厂商的各种小九九,各种勾心斗角。你真搞了这么个「标准委员会」,那你就等着天天吵架,10年出不了一个新版本吧。甚至哪怕是C/C++这样已经算是很成熟而且没太多直接利益纠葛,而且往往已经有业界现成通行标准的,你看看它们的效率啊:

posix的线程api在95年的POSIX 1c就已经定义了,而且很快就在*nix系统中成为实际标准。然而,线程进入C/C++标准里面是11年的C11/C++11,也就是过了16年时间。另外,读写锁这玩意在04年出现在pthread库里了,然而要等13年之后的