发布网友 发布时间:2022-04-21 08:18
共3个回答
热心网友 时间:2023-11-07 20:20
ANSI
C
一般都可以支持,但也涉及到不同版本的C标准的兼容性问题,比如VC6不支持C99,VS2003,2005,2008,20120等就可以部分支持C99标准;而且很多标准并没有规定实现,不同的编译器实现可能不同,比如C标准只规定了short<=int<=long,但并没有规定字节数,导致不同的编译器数据类型的大小各不相同。
非
ANSI
C标准的话,不同的编译器一般都有不同的实现,需要分别实现。
在移植到不同编译器的时候这些都要注意处理,比较常规的做法是数据类型和函数等自己根据不同编译器封装成一个统一的格式,在程序中使用封装后的数据类型或函数,而不要使用原生类型,这样在移植时只需要在封装的地方根据编译器的不同进行修改就可以了,不需要再修改源代码。
热心网友 时间:2023-11-07 20:21
不同厂商首先要遵循C98或C99的规范标准(ANSI和ISO制定),在此基础上的扩展部分难以兼容,
规范只是抽象的定义,允许有不同的解释,不同的实现方式侧重的性能指标不一样,
或者是实作者的技术水平不一,比谁的BUG更少些……
热心网友 时间:2023-11-07 20:21
如果是用标准库,那么所有的系统都兼容,但是每个系统都给C留了一些特定的库,所以区别主要在这里