取消引用指向结构体指针的指针

2024-01-03

gcc 4.7.2
c89

Hello,

我试图取消引用指向结构体指针的指针,当我执行以下操作时,我收到此错误消息:

LOG_INFO("CHANNEL ID --- %d", *channel->id);

编译错误

request for member ‘id’ in something not a structure or union

如果我尝试将其转换为正确的指针类型,我仍然收到相同的错误消息:

LOG_INFO("CHANNEL ID --- %d", (*(channel_t*)channel->id));

我通过声明一个新变量并分配结构指向的地址解决了这个问题:

channel_t *ch = NULL;
ch = *channel;
LOG_INFO("CHANNEL ID --- %d", ch->id);

我只是想知道为什么前两种方法失败了。

非常感谢您的任何建议,

结构:

typedef struct tag_channel channel_t;
struct tag_channel {
    size_t id;
    char *name;
};

我这样称呼它:

channel_t *channel = NULL;
channel = (channel_t*)apr_pcalloc(mem_pool, sizeof *channel);
LOG_CHECK(job_queue_pop(queue, &channel) == TRUE, "Failed to pop from the queue");

而这个功能,我遇到了麻烦:

apr_status_t job_queue_pop(apr_queue_t *queue, channel_t **channel)
{
    apr_status_t rv = 0;
    channel_t *ch = NULL;

    rv = apr_queue_pop(queue, (void**)channel);
    if(rv != APR_SUCCESS) {
        char err_buf[BUFFER_SIZE];
        LOG_ERR("Failed to pop from the queue %s", apr_strerror(rv, err_buf, BUFFER_SIZE));

        return FALSE;
    }

    ch = *channel;  
    LOG_INFO("CHANNEL ID --- %d", ch->id);
    LOG_INFO("CHANNEL NAME - %s", ch->name);

    return TRUE;
}

您的优先级错误,应该是例如

(*channel)->id
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

取消引用指向结构体指针的指针 的相关文章

随机推荐

  • C# 如何计算包含赋值的表达式?

    我有 C C 背景 我遇到了一种在 C 中交换两个值的奇怪方法 int n1 10 n2 20 n2 n1 n1 n2 0 在 C 中 上面两行在之间交换值n1 and n2 这对我来说是一个惊喜 因为在 C C 中 结果应该是n1 n2
  • C++ char*[] 到 char** 转换

    我有这个简单的代码 编译时没有错误 警告 void f int char int main int argc char argv f argc argv return 0 接下来是无法编译的类似代码 void f int char int
  • 如何在弹性搜索中强制执行必填字段?

    我正在后端使用弹性搜索构建一个CMS 我的团队决定使用弹性搜索 我对此很陌生 我主要使用以前项目中的 mongoose 和 mongodb 在 mongodb 中 如果我错误地分配了一个字段或完全跳过了必填字段 mongodb 会抛出错误
  • 为什么IEEE754单精度浮点数只有7位精度?

    为什么单精度浮点数具有 7 位精度 或双倍 15 16 位精度 谁能解释一下我们如何根据分配给 float Sign 32 Exponent 30 23 Fraction 22 0 的 32 位得出这一点 尾数的 23 个小数位 22 0
  • word插件中弹出对话框

    我正在使用 C 创建一个 MS Office Word 插件 我有一条带有几个按钮的丝带 单击其中一个按钮时 我需要一个带有几个文本框的弹出窗口 问题 如何在word插件中创建弹出对话框 将新表单添加到您的加载项项目并根据需要进行设计 在按
  • mysql - 今天位于两个列值之间

    id first datetime last datetime 1 2013 04 15 00 00 00 2013 04 21 23 59 00 2 2013 04 08 00 00 00 2013 04 14 23 59 00 3 20
  • IIS URL 重写 {R:N} 说明

    我一直无法理解 R N 的目的 谁能澄清一下何时使用 R 0 vs R 1 用法示例
  • 如何减少 Blazor WebAssembly 的加载时间

    我正在开发 Blazor WebAssembly 应用程序 加载时间超过30s 这是正常的吗 我的临时链接 http chhinsras 001 site1 itemurl com http chhinsras 001 site1 item
  • Python/Selenium/Chrome 不同错误的冲突解决方案

    一周左右的时间里 我遇到了一系列令人讨厌的 Selenium Chrome 错误 一段时间内一切正常 但突然间就不行了 我有适合我的 Google Chrome 版本 89 0 4389 114 的 Chromedriver 版本 89 0
  • 复制省略可以在synchronize-with 语句之间发生吗?

    在下面的示例中 如果我们暂时忽略互斥锁 复制省略可能会消除对复制构造函数的两次调用 user type foo unique lock lock global mutex return user type user type result
  • 将锚点向右对齐

    考虑以下 a a a a b a 如何将第二个锚点 b 向右对齐 PS 在这种情况下浮动是一种滥用 它不是为此而设计的 它会导致一些问题 所以我需要其他更合理的解决方案 只需这样做 style float right Like div a
  • IpOverUsbSvc 错误 Windows Phone 开发人员注册 [重复]

    这个问题在这里已经有答案了 当我尝试注册我的 Windows Phone 设备时Windows Phone 开发者注册 I get 无法连接到手机 该消息还指出 对于 Windows Phone 8 手机 请确保 Windows 手机 IP
  • Python-Flask 不接受自定义字体

    文件夹蓝图 模板 文件 html Static Fonts Style 在CSS文件中 我尝试过 font face font family
  • 获取上季度的结束日期

    对于给定日期 如何获取上季度的结束日期 我需要运行一项工作 其中考虑到了这一点 编辑 第一季度是一月 二月 三月 2号是四月 五月 六月等 任何帮助表示赞赏 谢谢 基本上 找出当前季度是哪个 返回上一季度的最后日期 3月31日 6月30日
  • 为 Linux 应用程序创建安装程序 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在开发一个小型跨平台应用程序 我需要一些有关如何在 Linux 中安装它的建议 我在 Window
  • 有CUDA智能指针吗?

    如果没有 释放的标准方法是什么cudaMalloc当抛出异常时ed内存 请注意 我无法使用 Thrust 您可以使用RAII http en wikipedia org wiki Resource Acquisition Is Initia
  • 使用 Laravel 在 FullCalendar 中重复发生事件

    I m working on a fullcalendar module for my page I could display Events on calendar without the recurring feature But wh
  • 是否存在始终返回零结果的 SQL 查询? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 如果有特定于 MySQL PostgreSQL Oracle 的解决方案 我对它们都很好奇 根据 DBMS 以下一项或多项将起作用 S
  • 如何获取要显示的类型提示?

    我见过 youtube 等人使用 rust analyzer 插件在 VSC 中使用 Rust 他们会显示可选的类型注释 即使它不一定写在代码中 就像我打字一样foo a b 在编辑器中 它会自动显示foo a A b B 哪里的 A an
  • 取消引用指向结构体指针的指针

    gcc 4 7 2 c89 Hello 我试图取消引用指向结构体指针的指针 当我执行以下操作时 我收到此错误消息 LOG INFO CHANNEL ID d channel gt id 编译错误 request for member id