use*_*382 5 c pointers typedef
指针的大小取决于机器的拱形.
所以sizeof(int*)= sizeof(int)或sizeof(int*)= sizeof(long int)
我希望有一个自定义数据类型,它是int或long int,具体取决于指针的大小.
我试图使用宏#if,但宏的条件不允许sizeof运算符.
另外,当使用if-else时,typedef仅限于if的范围.
if((sizeof(int)==sizeof(int *)){
typedef int ptrtype;
}
else{
typedef long int ptrtype;
}
//ptrtype not avialble here
Run Code Online (Sandbox Code Playgroud)
有没有办法在全球范围内定义ptrtype?
执行此操作的传统方法过去是使用 GNU autoconf (或类似的)来设置一些定义,例如SIZEOF_VOIDPTR
,但如果您有一个足够新的编译器,那么该类型intptr_t
很可能就是您想要的。(您可能需要设置一些编译器标志以启用 C99 模式;它位于<stdint.h>
.)