- 主题:gcc这什么情况
candidate function not vi able: no known conversion from 'uint64_t *' (aka 'unsigned long *') to 'unsigned long long *' for 1st argument
难道不都是64位,在这抱怨啥?
clang-tidy居然也报warning
非要我做cast?
--
修改:lwp FROM 27.17.246.*
FROM 111.183.100.*
但是我就是在这个平台上编的啊
gcc自己不知道自己是啥平台吗,就是交叉编译也应该知道啊
【 在 javaboy 的大作中提到: 】
: 标 题: Re: gcc这什么情况
: 发信站: 水木社区 (Tue Oct 31 22:10:33 2023), 站内
:
: 虽然两个类型都是64位,不代表能自动转换。
: 换个平台尺寸可能就不一样了。
:
: 【 在 lwp 的大作中提到: 】
: : candidate function not vi able: no known conversion from 'uint64_t *' (aka 'unsigned long *') to 'unsigned long long *' for 1st argument
: : 难道不都是64位,在这抱怨啥?
: : clang-tidy居然也报错
: : ...................
:
: --
:
: ※ 来源:·水木社区 mysmth.net·[FROM: 114.93.144.*]
--
FROM 27.17.246.*
不是,我不太理解为什么long和longlong在字长相同的情况下还是不同类型
如果我拿模板匹配,也会匹配出不同逻辑?
关键是这么搞的意义是什么啊,还有其它什么地方能体现这两种类型的区别
【 在 javaboy 的大作中提到: 】
: 标 题: Re: gcc这什么情况
: 发信站: 水木社区 (Tue Oct 31 22:21:30 2023), 站内
:
: 知道也不能自说自话放过啊。
:
: long和long long是不同类型,C++不能因为这个平台上刚好尺寸一样就允许程序员随意混着用。不然会乱套的。比如double和函数指针的大小一样,编译器总不能让程序员把1.0当一个函数指针调用吧。
:
: 【 在 lwp 的大作中提到: 】
: : 但是我就是在这个平台上编的啊
: : gcc自己不知道自己是啥平台吗,就是交叉编译也应该知道啊
:
: --
:
: ※ 来源:·水木社区 mysmth.net·[FROM: 114.93.144.*]
--
FROM 27.17.246.*
你说的这些我都知道
但我觉得在一个固定的硬软件平台上
在长度重叠的时候,两个类型随意替换没有什么问题啊
如果非要说模板匹配会有问题,那指针cast应该没什么问题吧
【 在 javaboy 的大作中提到: 】
: 标 题: Re: gcc这什么情况
: 发信站: 水木社区 (Tue Oct 31 22:31:12 2023), 站内
:
: char, short, long, long long 分别代表不同长度的整数类型。它们的长度可以重合,也可以不重合。
:
: x86_64+linux平台上它们分别是1、2、8、8个字节。
:
: x86_64+windows平台上它们则是1、2、4、8个字节。
:
: 你也完全可以设计一个平台,这四个类型都是1个字节。
:
: long和long long就是本质不同的两个类型。模板匹配得两个都搞一遍。
:
: 【 在 lwp 的大作中提到: 】
: : 不是,我不太理解为什么long和longlong在字长相同的情况下还是不同类型
: : 如果我拿模板匹配,也会匹配出不同逻辑?
: : 关键是这么搞的意义是什么啊,还有其它什么地方能体现这两种类型的区别
:
: --
:
: ※ 来源:·水木社区 mysmth.net·[FROM: 114.93.144.*]
--
FROM 27.17.246.*
我想了下,指针cast好像也会有问题,比如重载了两个函数
void f(long*)
void f(long long*)
哎tmd这个东西真的是蛋疼
【 在 javaboy 的大作中提到: 】
: 在C语言里没问题,C++里不可以这么写
--
FROM 27.17.246.*
用long和longlong的都没啥移植要求吧
有移植需求的不都是用stdint.h么
【 在 z16166 的大作中提到: 】
: 标 题: Re: gcc这什么情况
: 发信站: 水木社区 (Tue Oct 31 23:09:18 2023), 站内
:
: 一个模板函数就搞定的问题,并不蛋疼吧
:
: 严格的类型区分是好事,你这个个例不需要移植,但其他人可能有移植的要求,不按语言规范来,到时候出现各种shock
:
:
: 【 在 lwp 的大作中提到: 】
: : 我想了下,指针cast好像也会有问题,比如重载了两个函数
: : void f(long*)
: : void f(long long*)
: : ...................
:
: --
: 每天半小时节奏光剑,预防老年痴呆
:
: ※ 来源:·水木社区
http://www.mysmth.net·[FROM: 221.218.160.*]
--
FROM 27.17.246.*
我就一直呼吁把unit8,16,32,64这种直接定义为关键字
正常人没几个会愿意用short long这玩意的吧
【 在 hgoldfish 的大作中提到: 】
: 新的语言都在整型的名字加上位长度。看来 c/cpp 的这一套被证明不够好用。
:
--
FROM 111.183.63.*
不是我用,是其它部门给的库接口是Longlong
接口瞎jb写
我代码都统一用stdint的,结果这里居然不行
本身gcc也只是报个warning,但我们上了clangtidy,直接这个不给过了
【 在 z16166 的大作中提到: 】
: 历史包袱总归是有的。这跟牙膏厂的处理器还支持real mode、Windows还支持WoW32一个道理
: 你为啥用long long呢?
:
--
FROM 111.183.63.*