递归火山软件开发平台

标题: 类型无法强转的问题 [打印本页]

作者: 沉默流星    时间: 2025-5-16 12:23
标题: 类型无法强转的问题
代码如下:
  1. int read_func(void* ptr, uint8_t* buf, int buf_size)
  2. {
  3.     FILE* fp = (FILE*)ptr;
  4.     size_t size = fread(buf, 1, buf_size, fp);
  5.     int ret = size;
  6.     printf("Read Bytes:%d\n", size);
  7.     return ret;

  8. }
复制代码
火山代码
(, 下载次数: 48)

(, 下载次数: 41)

作者: 小蜗牛    时间: 2025-5-16 12:51
指针不能转为类...如果可以就方便很多了

作者: server    时间: 2025-5-16 12:58
本帖最后由 server 于 2025-5-16 12:59 编辑

你这不是方不方便的问题。
他这个写法都过不了C++编译器吧。
不能这样用类。
你至少 加个 &取类指针啊。
驴头驴头对不上马嘴驴头对不上马嘴 - -

你单纯的指针类型问题,那加个类型强转没问题。
你把类转成指针没得搞。只能加取址符

这还是基础尝试问题。

作者: 沉默流星    时间: 2025-5-16 13:04
server 发表于 2025-5-16 12:58
你这不是方不方便的问题。
他这个写法都过不了C++编译器吧。
不能这样用类。

你说错了,C++编译器是支持的,只是上层火山语法限制不让这样做.
跟C++基础牢固不牢固没啥关系.
作者: 沉默流星    时间: 2025-5-16 13:06
小蜗牛 发表于 2025-5-16 12:51
指针不能转为类...如果可以就方便很多了

这种目前我采用的嵌入方式来解决的.
作者: server    时间: 2025-5-16 13:08
沉默流星 发表于 2025-5-16 13:06
这种目前我采用的嵌入方式来解决的.

如果C++ 支持的话,你直接使用 @ 嵌入代码. 可以避免 语法检查.
我不清楚你  是 如何定义 文件类  的

作者: 沉默流星    时间: 2025-5-16 13:11
server 发表于 2025-5-16 13:08
如果C++ 支持的话,你直接使用 @ 嵌入代码. 可以避免 语法检查.
我不清楚你  是 如何定义 文件类  的
...

是的,用嵌入是可以实现的。我想问的是不使用嵌入能不能解决这个问题
作者: Xelloss0618    时间: 2025-5-16 13:21
一、uint8_t* 是无符号字节指针,不是字符;
二、文件类的别名类型改成本地整数基本类型,才可以强转;
作者: 沉默流星    时间: 2025-5-16 13:34
Xelloss0618 发表于 2025-5-16 13:21
一、uint8_t* 是无符号字节指针,不是字符;
二、文件类的别名类型改成本地整数基本类型,才可以强转; ...

无符号字节指针,官方类库中没搜到啊
作者: Xelloss0618    时间: 2025-5-16 13:36
沉默流星 发表于 2025-5-16 13:34
无符号字节指针,官方类库中没搜到啊

当然是要自己封,或者统一用变整数也行
作者: 沉默流星    时间: 2025-5-16 13:42
Xelloss0618 发表于 2025-5-16 13:36
当然是要自己封,或者统一用变整数也行

好的,谢谢X大
作者: cxz7411    时间: 2025-5-16 16:21
本帖最后由 cxz7411 于 2025-5-16 16:22 编辑

<火山程序 类型 = "通常" 版本 = 1 />

方法 read_func
参数 ptr <类型 = 变整数>
参数 buf <类型 = 变整数>
参数 buf_size <类型 = 整数>
{
    @  FILE* fp = (FILE*)@<ptr>;
    @ size_t size = fread((void*)@<buf>, 1, @<buf_size>, fp);
    @ int ret = size;
    @ return ret;
}





欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/) Powered by Discuz! X3.4