我们正在开发运行在ARM处理器上的应用程序级代码。BSP (低级代码)是由一个3d方交付的,所以我们的代码就位于这个抽象层的顶部(代码是用c++编写的)。
为了进行单元测试,我假设我们必须模拟/存根出BSP库(本质上是抽象出HW),但我不确定的是,如果我在我的pc上编写/运行单元测试,我是否与GCC一起编译它?通常,我们使用Realview编译器来编译ARM的代码。我是否可以假设,如果我用x86编译器编译和运行代码,并且单元测试通过,那么它在用RealView编译器编译时也会通过吗?
我不确定编译器有多大的差别,如果您可以相信,如果x86编译代码通过了单元测试,那么您也可以确信Realview编译代码没有问题。
发布于 2013-11-07 09:22:57
尽管编译器和其他软件一样包含bug,但在创建自己的软件时遇到其中一个bug的可能性接近于零,而这种错误表现为行为不当的软件的可能性甚至更小。
除了编译器错误,您可能会得到不同的行为,因为这两个编译器对您的代码的解释不同。只要您远离语言的模糊角落,特别是避免使用未定义或未指定的行为或不可移植的假设(例如基本类型的大小),那么所有C++编译器在用不同的编译器编译相同的代码时实际上都非常擅长产生一致的行为。
通常,除非您正在做一些非常特殊的事情,否则如果您的代码与所有相关编译器一起编译,那么您可以确保生成的可执行文件也显示出一致的行为。
https://softwareengineering.stackexchange.com/questions/216761
复制相似问题