我有2个内核,一个是32位,另一个是64位.
在64位机器上,我支持unsigned long long,我需要将这个值赋给一个可以在32位机器上访问的varriable,例如: -
typedef struct {
unsigned int low;
unsigned int high;
} myint64_t;
myint64_t app_sc;
Run Code Online (Sandbox Code Playgroud)
以下是64位机器的代码片段:
unsigned long long sc;
/* Calculate sc */
...
Run Code Online (Sandbox Code Playgroud)
现在在64位机器上,我需要将"sc"分配给app_sc,并将其用于64位机器上的某些计算.
我试图做这样的事情: -
app_sc = sc;
Run Code Online (Sandbox Code Playgroud)
但编译器给我编译时错误.我可以这样做,像这样: -
app_sc.low = sc & 0xFFFFFFFF;
app_sc.high = (sc>>32) & (0xFFFFFFFF);
Run Code Online (Sandbox Code Playgroud)
但这是否有保证,它适用于所有情况?
有没有更好的方法呢?