Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;x86上的单元测试,目标是ARM:会出什么问题?_C++_Unit Testing_Gcc_X86_Arm - Fatal编程技术网

C++ C++;x86上的单元测试,目标是ARM:会出什么问题?

C++ C++;x86上的单元测试,目标是ARM:会出什么问题?,c++,unit-testing,gcc,x86,arm,C++,Unit Testing,Gcc,X86,Arm,我的最终目标是ARM32位iMX6,但我正在编译x86(32位)的测试并在Windows10x64上运行它们 哪些编译器选项会导致在我的目标和Windows之间获得不同的单元测试结果?不要管编译器选项,未定义行为的结果可能完全不同,因为它们是未定义的。我完全支持使用PC测试用例在PC这样易于调试的平台上敲出逻辑,但是,您可能需要在目标上进行的不仅仅是集成测试,任何浮点标志都可能对浮点计算的结果产生影响。如果程序有UB.Undefined行为,任何优化标志都可能对程序产生重大影响。基本上,当你违反

我的最终目标是ARM32位iMX6,但我正在编译x86(32位)的测试并在Windows10x64上运行它们


哪些编译器选项会导致在我的目标和Windows之间获得不同的单元测试结果?

不要管编译器选项,未定义行为的结果可能完全不同,因为它们是未定义的。我完全支持使用PC测试用例在PC这样易于调试的平台上敲出逻辑,但是,您可能需要在目标上进行的不仅仅是集成测试,任何浮点标志都可能对浮点计算的结果产生影响。如果程序有UB.Undefined行为,任何优化标志都可能对程序产生重大影响。基本上,当你违反C++规则时,C++不要求在你这样做的时候做任何特定的事情,比如在一个界限之外访问数组,或者在你给它一个值之前使用<代码> int <代码>。在这些情况下,“任何事情”都可能发生如果您的代码使用
std::atomic
,那么在x86上进行测试不会暴露内存排序中的某些错误,这些错误只有在顺序较弱的类似ISA的ARM上运行时重新排序时才可见。(x86 asm是seq_cst+a store buffer。ARM asm是mou released/mou consume)。不用管编译器选项,未定义行为的结果可能完全不同,因为它们是未定义的。我完全支持使用PC测试用例在PC这样易于调试的平台上敲出逻辑,但是,您可能需要在目标上进行的不仅仅是集成测试,任何浮点标志都可能对浮点计算的结果产生影响。如果程序有UB.Undefined行为,任何优化标志都可能对程序产生重大影响。基本上,当你违反C++规则时,C++不要求在你这样做的时候做任何特定的事情,比如在一个界限之外访问数组,或者在你给它一个值之前使用<代码> int <代码>。在这些情况下,“任何事情”都可能发生如果您的代码使用
std::atomic
,那么在x86上进行测试不会暴露内存排序中的某些错误,这些错误只有在顺序较弱的类似ISA的ARM上运行时重新排序时才可见。(x86 asm是顺序cst+存储缓冲区。ARM asm是mo_松弛/mo_消耗)。