消息关闭
    暂无新消息!
我这里有一段纯C写的程序,在Linux和ARM均编译通过生成可执行文件,然后在linux下的结果正确无误,但是在ARM下却结果有误,不知道为什么,按理说纯C写的程序是可移植的啊~~~~~~~~求大神们指导!!!!

10个回答

︿ 1
 使程序可移植的本质非常简单:如果做某些事情有一种既简单又标准的方法,就按这种方法做。
    使程序可移植的第一步就是使用标准库函数,并且把它们和ANSI/ISO C标准中定义的头文件放在一起使用。
    第二步是尽可能使所写的程序适用于所有的编译程序,而不是仅仅适用于你现在所使用的编译程序。如果你的手册提醒你某种功能或某个函数是你的编译程序或某些编译程序所特有的。你就应该谨慎地使用它。有许多关于c语言编程的好书中都提出了一些关于如何保持良好的可移植性的建议。特别地,当你不清楚某个东西是否会起作用时,不要马上写一个测试程序来看看你的编译程序是否会接受它,因为即使这个版本的编译程序接受它,也不能说明这个程序就有很好的可移植性(C++程序员比c程序员应该更重视这个问题)。此外,小的测试程序很可能会漏掉要测试的性能或问题的某些方面。
    第三步是把不可移植的代码分离出来。如果你无法确定某段程序是否可移植,你就应该尽快注释出这一点。如果有一些大的程序段(整个函数或更多)依赖于它们的运行环境或编译方式,你就应该把其中不可移植的代码分离到一些独立的“.c”文件中。如果只在一些小的程序段中存在可移植性问题,你可以使用#ifdef预处理指令。
︿ 0
太笼统了,把CODE贴出来大家一起看看,问题一下就可以解决了
︿ 0
涉及到内存地址等都有可能不一样啊 寻址能力大小端也有可能