在c ++

时间:2015-07-14 10:51:15

标签: c++ linux 64-bit

我正在将代码从32位UNIX移植到64位LINUX机器。

如果const long say l1中有变量,ushort中的变量说us1。现在我需要比较这两个说if( l1 != us1) ....这是行不通的。我应该使用什么类型转换?

这篇文章在32位Unix中运行,但在Linux 64位中无法预测。有时它可以正常工作,有时却不能。

原因是long占用的位数现在改变了。我打算将us1ushort}转换为ulong,然后进行比较。说(l1 != (ulong) us1)。但在此l1中仍然会签名。

请建议适当的类型转换。代码段如下:

nise::facex::order::NiseWorkOrder *wrkOrd = 0;  (this is a USHORT)  
int retCode = getNiseOrder(wrkOrd, asyncQ->m_order_number);      

NiseWorkOrder是一个函数,其中wrkOrd是对指针的引用 getniseorder执行CROBA调用并填充NiseWorkOrder结构。

现在,asyncQ->m_version_numosplong

TRACEPRT(APP_LVL, ("wrkOrd->orderHead.wrkOrdKey.order.orderVersion = <%d>",wrkOrd->orderHead.wrkOrdKey.order.orderVersion));  
TRACEPRT(APP_LVL, ("(const long)asyncQ->m_version_num = <%d>", (const long)asyncQ->m_version_num));  
(const long)asyncQ->m_version_num !=
             wrkOrd->orderHead.wrkOrdKey.order.orderVersion)  
......

问题在于,尽管痕迹总是在条件为真时有时仍然显示两个值相同(不应该是。

0 个答案:

没有答案