指针在函数中设置为正确类型返回

时间:2012-05-21 18:34:52

标签: c

假设我有一个函数,其中两个参数是全局数组。代码看起来像这样:

/*global variable*/
int    Input_Messages          [Num_Messages ][Num_Elements];

static void Set_Conditions()
{
     PACK(250.0, (unsigned short*)&Input_Messages[0][15], (unsigned short*)&Input_Messages[0][16], 18, 19, -1, 1.0);
}

void PACK(float value, unsigned short *Hi, unsigned short *Lo, long bit, long word, long lsb, float scale)
{
     unsigned long Value32;
     .
     .
     .
     /*last bit of code where *Hi and *Lo are set*/
     *Lo = (unsigned short)(Value32);
     *Hi = ((unsigned short)(((Value32) >> 16) & 0xFFFF));
}

我面临的问题如下:

完成PACK()后,它会将*Lo*Hi的值分别返回到Input_Messages[0][15][0][16]。我在big endian机器上遇到的问题是,在完成所有这些操作之后,如果你查看Input_Messages的那些值,它们已被转换为long,而我需要一个short。一个例子是,如果在PACK()的末尾,*Lo设置为62 (003E),当它返回Set_Conditions()时,如果您查看Input_Messages[0][16],而不是62,它将是4063232 (003E0000)

我设法通过将global Input_Messages[][]int更改为unsigned short来解决此问题,但在此过程中,函数调用等需要进行大量其他更改。我猜我试图看看是否有一种更简单的方法来设置它,所以它返回为短,并保持简短。某种铸造或某种东西。

如果需要更多解释,请告诉我。我试图尽可能地解释它,并发布相关代码,但我会回答任何问题。

0 个答案:

没有答案