我想在C和C ++中将任何类型的指针转换为 int 。 C和C ++的代码必须相同。以下程序适用于C但不适用于C ++。
int main(void)
{
long long a;
int b = (int)&a;
return 0;
}
如何让它适用于C ++?
答案 0 :(得分:6)
看起来你想要offsetof
宏,它在<stddef.h>
中定义。
修改:您已更改了示例,现在应该查看intptr_t
中的uintptr_t
或stdint.h
。在任何情况下,都不要将地址放入普通int
。
答案 1 :(得分:0)
你的意思是:
struct X
{
char a;
long long b;
};
int main(void)
{
int b[20];
// C++ requires fixed size of arrays.
b[(int)(&((struct X*)0)->b) - 8] = 5;
// This will compile But what you get is not even worth guessing at.
return 0;
}