代码是:
Push(size, (POINTER)(GetCar(i) == term_Null()? 0 : 1));
Run Code Online (Sandbox Code Playgroud)
这里是 C code push
回报 ABC
这是
typedef POINTER *ABC
typedef void * POINTER
ABC size;
Push(ABC,POINTER);
XYZ GetCar(int);
typedef struct xyz *XYZ;
XYZ term_Null();
long int i;
Run Code Online (Sandbox Code Playgroud)
特别警告的原因是什么?
ana*_*lyg 21
您可以使用intptr_t
以确保整数具有与指针相同的宽度.这样,您不需要发现有关您的特定平台的内容,它也可以在另一个平台上运行(与unsigned long
解决方案不同).
#include <stdint.h>
Push(size, (POINTER)(intptr_t)(GetCar(i) == term_Null()? 0 : 1));
Run Code Online (Sandbox Code Playgroud)
取自C99标准:
7.18.1.4能够保存对象指针的整数类型
1以下类型指定一个带符号的整数类型,其属性是任何有效的void指针都可以转换为此类型,然后转换回指向void的指针,结果将等于原始指针:
使用intptr_t