㈠ gcc与diab编译器的兼容性问题
不好意思刚看到,不同编译器编译的结果不能链接到一起,理由主要有以下两方面:一是不同编译器可能对变量名做不同处理,主要针对c++,好像没有什么编译器对c语言的变量名改变,举个例子,假设c++中的变量test_var,用两种不同编译器编译完该结果可能是Diab_test_var和GCC_test_var成为不同的变量,那么对于连接器来说就是不同的变量怎么会链接到一起是吧。c好像不存在文件名问题,但是c会遇到第二个方面。第二个方面就是不同的编译器会提供一些内部函数比如*(乘以)这个操作在编译器里有定义,有具体的代码来实现,如果编译器不同实现的函数名不同,不会链接到一起。当然还有更复杂的原因,可能我也不太了解。这些是我的理解,可能不全,但是可以肯定的是,不同编译器编译的二进制文件不能链接到一起使用。
至于你说的BSP是风河提供的会不会不兼容的问题,是这样的。通常对于BSP中的c语言部分,无所谓兼不兼容,因为c语言要是ANSI标准的话所有的编译器都会支持。BSP中的汇编部分跟编译器相关,但也是格式上的问题。一般vxworks提供gcc版的bsp(提供不提供其他编译器的BSP我不清楚,因为我们用的是gcc),所以应该是兼容的。假如真的不提供,可以按照gcc汇编语法,把BSP中的函数和变量以及伪指令部分更改成符合GCC语法即可,整体的汇编不需要更改,这部分工作很小的应该不难。
我知道的就这些,希望能帮到你。
㈡ FORTRAN编程兼容问题。我的编译器是Visual Studio 2013, Fortran为Intel Visual Fortran XE2013,
编译器不兼容,如gfortran或f95编译器里面,读写二进制文件是open语句中的(form='unformatted',access='direct',recl=m*n)
在visual fortran里面会出现问题,将三个选项合并为(form='binary')即可通过。
具体在哪里出现问题,编译器会提示的
㈢ 不同的c语言编译系统差别在哪里代码是否 存在兼容性的问题
ANSI
C
一般都可以支持,但也涉及到不同版本的C标准的兼容性问题,比如VC6不支持C99,VS2003,2005,2008,20120等就可以部分支持C99标准;而且很多标准并没有规定实现,不同的编译器实现可能不同,比如C标准只规定了short<=int<=long,但并没有规定字节数,导致不同的编译器数据类型的大小各不相同。
非
ANSI
C标准的话,不同的编译器一般都有不同的实现,需要分别实现。
在移植到不同编译器的时候这些都要注意处理,比较常规的做法是数据类型和函数等自己根据不同编译器封装成一个统一的格式,在程序中使用封装后的数据类型或函数,而不要使用原生类型,这样在移植时只需要在封装的地方根据编译器的不同进行修改就可以了,不需要再修改源代码。
㈣ C语言代码运行不出为什么
C语言代码运行不出现象可能有很多原因,以下是一些常见的原因和解决方法:
编译错误:代码中存在语法错误或类型错误,导致编译失败。可以通过编译器的错误提示信息来定位错误,逐一修正后重新编译。
运行错误:代码编译成功,但在运行时出现错误,如数尘棚旦组越界、空指针、除零等错误。可以通过调试工具或打印调试信息等方和唤法来定位错误。
缺少库文件或头文件:代码中使用了某些库函数或头文件,但是编译器无法找到相应的库文件或头文件,导致编译失败。可以检查编译器的搜索路径是否正确,或手动添加缺失的库文件或头文件。
环境问题:代码在不同的操作系统、编译器或硬件平台上可能存在差异,导致代码无法正常运行。可以检查编译器和操作系统的兼容性,或在特定的环境中运行代码。
逻辑问题:代码逻辑存在问题,导致代码无法正确执行。可以检查代码逻辑是否正确,是否存在死循环、递归深度过大等问题。
综上,C语言代码运行不出现象可能有多种原因,需要逐一排查解决。可以利用编译器和调试工具来定位问题,或参考其他人的代码或文派扰档来解决问题。