我目前正在编写要在Microchip PIC18 MCU上运行的程序。我使用xc8(v1.45-我必须使用此版本-)编译器并在MPLAB IDE中工作。在此版本的编译器中,没有64位整数支持。我需要使用64位整数进行一些计算。请参阅下面的我的方法来创建64位整数变量类型。但是每当我尝试将任何其他变量类型转换为这个新创建的类型时,都会出现此错误:
错误:从联合中不存在的类型转换为联合类型
能帮我解决这个问题吗?
我尝试使用“ long long int”变量,但是此版本的xc8不支持该变量。
#include <stdio.h>
#include <stdint.h>
typedef union
{
int32_t bigInteger[2];
}myInt64;
int main(void) {
myInt64 *myVariable;
myInt64 *aaa;
long abc = 0xFAC0ED12;
aaa = (myInt64)abc;
myVariable = 0xF0000000000000000F;
printf("%jx", aaa);
return EXIT_SUCCESS;
}
答案 0 :(得分:1)
您不能仅通过构造包含64位的结构或联合来创建64位整数类型,而不管该结构或联合的内部成员是什么。 C没有规定将整数转换为这种类型或对其进行任何算术运算。
要在没有编译器直接支持的情况下实现64位整数,必须编写自己的例程来执行所需的任何操作,其中可能包括:
scanf
对于内置类型一样)。printf
一样)。