代码是:
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
| 归档时间: |
|
| 查看次数: |
21285 次 |
| 最近记录: |