You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编译代码遇expected expression before ‘shared_mem_t’错误,寻求解决方案

编译报错“expected expression before ‘shared_mem_t’”的修复方案

错误原因

shared_mem_t是类型名(比如通过typedef定义的结构体类型),但你直接用它调用箭头运算符->访问成员——->只能用于指针变量,不能用于类型名,这才导致编译报错。

修复方案

分两种常见情况处理:

情况1:shared_mem_t是结构体类型

你需要先定义一个该类型的指针变量(可以是全局变量,也可以通过参数传递到函数中),用变量来访问成员:

// 示例:全局声明该类型的指针变量
shared_mem_t *shared_mem_ptr;

void* temp_monitor(void* ptr) {
    int thread = *((int*)ptr);
    int temperature;
    // 使用指针变量访问成员
    temperature = shared_mem_ptr->levels[thread].temp;
    // 函数返回void*类型,必须返回指针值
    return NULL;
}

情况2:shared_mem_t是变量名拼写错误

检查代码中是否存在名为shared_mem_t的指针变量,如果是拼写错误(比如实际变量名是shared_mem),直接修正变量名即可:

void* temp_monitor(void* ptr) {
    int thread = *((int*)ptr);
    int temperature;
    // 修正为正确的指针变量名
    temperature = shared_mem->levels[thread].temp;
    return NULL;
}

额外提示

你的函数声明为void*类型,必须返回一个指针值(比如return NULL;),否则编译会出现警告。

内容的提问来源于stack exchange,提问作者Roxanne Cardona

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 20:20:52