我有 2 个内核,一个是 32 位的,另一个是 64 位的。
在 64 位机器上,我支持 unsigned long long,我需要将此值分配给将在 32 位机器中访问的变量,例如:-
typedef struct {
unsigned int low;
unsigned int high;
} myint64_t;
myint64_t app_sc;
下面是 64 位机器的代码片段:
unsigned long long sc;
/* Calculate sc */
...
现在在 64 位机器上,我需要将“sc”分配给 app_sc,并将其用于 64 位机器上的一些计算。
我试图做这样的事情: -
app_sc = sc;
但是编译器给了我编译时错误。我可以类似地做这样的事情:-
app_sc.low = sc & 0xFFFFFFFF;
app_sc.high = (sc>>32) & (0xFFFFFFFF);
但这能保证它在所有情况下都有效吗?
有没有更好的方法呢?