小编dav*_*dil的帖子

在Clang中禁用"从指针转换为较小类型uint32_t"错误

我正在开展一个学校项目,涉及在实验性硬件上移植大量的C++代码.不幸的是,该硬件是64位,并且代码包含许多指针算法实例,它们需要指针为32位,即它经常这样做reinterpret_cast<uint32_t>(ptr).

逐一浏览它们将是非常繁琐的,因为无论如何这是一个实验项目,我很乐意接受"hackish"解决方案.所以我修改了malloc的实现,以确保它永远不会分配超过4GB限制的内存.从技术上讲,这些演员应该是有效的.

问题是,如何向Clang解释这个?我得到的错误是:error: cast from pointer to smaller type 'uint32_t' (aka 'unsigned int') loses information.有没有办法禁用它?

谢谢,大卫

c++ pointers compiler-errors clang

8
推荐指数
3
解决办法
9845
查看次数

在不同类中创建静态类的intance

我正在编写一个Clojure应用程序,它使用BouncyCastle在通过互联网传输时加密数据.然而,BouncyCastle有一些非常奇怪的类,特别是一个叫做ECCurve(椭圆曲线)的类.它只是一个由两个类Fp和F2m(不同类型的曲线)扩展的抽象类.但是,这些只是作为ECCurve中的公共静态类编写的(而不是在单独的文件中).

所以问题是:当我在一个不同的抽象类中创建一个声明为static的类的实例时,我该如何引用它?我试过这个:

(def curve (new ECCurve.Fp params)) ; naive, I know (ECCurve is imported btw)
(def curve (new ECCurve/Fp params))
(def curve (new (. ECCurve Fp) params))
(def curve (new (ECCurve/Fp) params))
(def curve (new org.bouncycastle.math.ec.ECCurve.Fp params))
Run Code Online (Sandbox Code Playgroud)

...但这些都不起作用(编译器说抛出了ClassNotFoundException).任何想法,怎么做对吗?

谢谢,大卫

clojure

1
推荐指数
1
解决办法
107
查看次数

标签 统计

c++ ×1

clang ×1

clojure ×1

compiler-errors ×1

pointers ×1