社区
Linux/Unix社区
帖子详情
如何去除64位指针赋给int时的编译警告?
ycf128
2010-01-05 01:31:16
在64位机编程时,原来在32位机有把指针赋给int的用法,可在64机会出现指针截断的问题,出现大片的警告,怎么才能避免这些警告呢?
...全文
335
8
打赏
收藏
如何去除64位指针赋给int时的编译警告?
在64位机编程时,原来在32位机有把指针赋给int的用法,可在64机会出现指针截断的问题,出现大片的警告,怎么才能避免这些警告呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
mymtom
2010-01-06
打赏
举报
回复
[Quote=引用楼主 ycf128 的回复:]
在64位机编程时,原来在32位机有把指针赋给int的用法,可在64机会出现指针截断的问题,出现大片的警告,怎么才能避免这些警告呢?
[/Quote]
原来的做法本来就有问题,还要避免警告?
改程序吧!
deep_pro
2010-01-06
打赏
举报
回复
强制类型转换行不通的
64位的指针说截就截,怎么可能
ycf128
2010-01-06
打赏
举报
回复
恩,谢谢各位的高见,看来程序还得在64位兼容性上下功夫。
gql1123
2010-01-06
打赏
举报
回复
[Quote=引用 4 楼 wenxy1 的回复:]
强制转换类型。
[/Quote]
对
Wenxy1
2010-01-05
打赏
举报
回复
强制转换类型。
jiangfeng999
2010-01-05
打赏
举报
回复
还不如自己声明一个指针类型 64位时为long32位是为int
#ifdef 64_BIT
typedef POINT u_int64_t
#elseif 32_BIT
typedef POINT u_int32_t
不动如岳
2010-01-05
打赏
举报
回复
[Quote=引用 1 楼 deep_pro 的回复:]
原来的赋值给int的程序,本身就是有bug的
long才是同cpu字长一样的,指针一定要用long保存
[/Quote]
对对对,指针都是long型的,只不过32机器上,long和int都是4个字节
deep_pro
2010-01-05
打赏
举报
回复
原来的赋值给int的程序,本身就是有bug的
long才是同cpu字长一样的,指针一定要用long保存
详解C/C++中const关键字的用法及其与宏常量的比较
1.const关键字的性质 简单来说:const关键字修饰的变量具有常属性。 即它所修饰的变量不能被修改。 2.修饰局部变量 const
int
a = 10;
int
const b = 20; 这两种写法是等价的,都是表示变量的值不能被改变,需要注意的是,用const修饰变量
时
,一定要给变量初始化,否则之后就不能再进行赋值了,而且
编译
器也不允许不赋初值的写法: 在C++中不赋初值的表达一写出来,
编译
器即报错,且
编译
不通过。 在C中不赋初值的表达写出来
时
不报错,
编译
时
只有
警告
,
编译
可以通过。而当你真正给它赋值
时
才会报错,那么没有初值也不能被赋值这样的变量有什么用哪? const
64位
系统上,
指针
的大小(通常是8字节)与
int
的大小(通常是4字节)不同
指针
强制转换为
int
或从
int
强制转换为
指针
时
,会导致数据丢失
在
64位
系统上,
指针
的大小(通常是8字节)与
int
的大小(通常是4字节)不同在
64位
系统上,
指针
的大小(通常是8字节)与
int
的大小(通常是4字节)不同
指针
强制转换为
int
或从
int
强制转换为
指针
时
,会导致数据丢失,
编译
器会发出
警告
C语言中,可以使用
int
ptr_t或u
int
ptr_t来存储
指针
的值,这些类型定义在std
int
.h头文件中,可以确保
指针
转换
时
不会丢失数据。// 使用u
int
ptr_t存储
指针
值。
c语言常量
指针
赋值给变量
指针
导致
警告
常量
指针
定义:常量是形容词,
指针
是名词,以
指针
为中心的一个偏正结构短语。这样看,常量
指针
本质是
指针
,常量修饰它,表示这个
指针
乃是一个指向常量的
指针
。
指针
指向的对象是常量,那么这个对象不能被更改。常量
指针
的使用要注意,
指针
指向的对象不能通过这个
指针
来修改,可是仍然可以通过原来的声明修改,也就是说常量
指针
可以被赋值为变量的地址,之所以叫做常量
指针
,是限制了通过这个
指针
修改变量的值。 在C/C++中,...
关于_w64
在64为
编译
器下,而且打开了/Wp64
编译
选项
时
,
编译
器会对使用了__w64的类型进行32位到
64位
移植性的判断,比如将
64位
指针
赋给
INT
_PTR
时
,
编译
器就会发出
警告
。
INT
_PTR
int
(_W64
int
即__w64
int
) * _W64
int
→
INT
_PTR,_W64就是__w64,是为了解决32位与
64位
编译
器的兼容性而设置的关键字 用于
指针
运算
看这段宏:
#if
64位
程序怎么判断
指针
是否有效_C语言——
指针
指针
:也可以叫
指针
变量,与其他类型的变量相同,同样保存一个值,只不过保存的值是一片地址(16进制数)注:在32位机上,
指针
统一占4个字节,
64位
机则占用8个字节,因为
指针
就是用来保存地址,所以地址多大,
指针
就有多大。一、使用
指针
需要了解并注意:因为
指针
记录的是地址,所以理论上来说,
指针
就记录了一个16进制数,所以以下操作是合理:
int
*p = 0xFFFF10;但是
编译
器会报
警告
,
警告
的原因是p...
Linux/Unix社区
23,223
社区成员
74,536
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章