所以我必须建立一个小小的游戏,要求玩家选择一个数字,看看他们是否猜到了电脑选择的东西。它有2个玩家,每个玩家可以轮到另一个玩家。 其中一条规定是我的教授正在运行一个Linux操作系统并且已经说过如果它不起作用那么它就是一个洗牌。当我在codeblocks中运行代码时,工作会找到并完成它应该做的事情。如果玩家通过并且显示输出消息并且转弯开关。
当我在linux服务器上运行代码时,它总是将turnInput
的{{1}}评估为“PASS”之外的其他内容,它将playTurn()
返回为false并移至{{1} }}
当我在Windows上的代码块上运行时,它很好并且完全应该做到了。当我编译它时,我没有得到任何警告和Linux本身就是一个我以前从未处理过的操作系统。是否有理由将其传递给代码?
if(strcmp(turnInput, passValue) == 1)
答案 0 :(得分:3)
strcmp
有3个可能的返回码:
<0
==0
>0
没有具体的==1
,因此假设您可以说==1
,这是不安全或便携的。请改用>0
。
这实际上是一个很好的可移植性和移植问题的例子 - 从问题来看,显然==1
适用于Windows,但是将代码移植到Linux并停止。我不确定windows文件是否为“-1,0,1”,或者它是否只是一个恰好正常工作的假设,但正如OP发现的那样:“Gotcha !!”