【问题标题】:'dev_addr' undeclared (first use in this function)'dev_addr' 未声明(在此函数中首次使用)
【发布时间】:2013-06-14 01:17:04
【问题描述】:

我正在使用 NIOS II - Eclipse 这是我的代码示例 我基本上是在尝试调用一个函数

struct DevDesc {

u32* mmio;

}

struct DevDesc dev_desc;

struct MemDesc mem_desc_g;//this structure is defined in another file

struct SysDesc sys_desc_g = {

.dd = &dev_desc,

.md = &mem_desc_g,

};

u32 power_mode_sleep (struct SysDesc *sd)

{

void * dev_addr = sd->dd->mmio;

//code
//code
//code

return 0;

}

几行之后我尝试调用它

int main()

{

power_mode_sleep((u32*)dev_addr);

}

当我尝试构建它时,会抛出未声明的错误“dev_addr”(在此函数中首次使用)并且它指向该行

power_mode_sleep((u32*)dev_addr);

我试图使代码简短,只写我认为必要的内容。如果有人想查看更多详细信息,我很乐意为他们提供。

【问题讨论】:

    标签: c power-management nios


    【解决方案1】:

    void * dev_addr = sd->dd->mmio; 被限制在函数power_mode_sleep (struct SysDesc *sd) 的范围内,因此出现错误。

    另外,您将(u32*)dev_addr 作为参数传递给power_mode_sleep。然而,它需要一个struct SysDesc * 类型的参数

    【讨论】:

    • 好的,当我尝试在 main() { struct SysDesc * sd; 中声明 dev_addr 时void * devaddr = sd->dd->mmio power_mode_sleep((u32*)dev_addr; } 它摆脱了错误,但抛出了警告“从不兼容的指针类型传递'power_mode_sleep'的参数1
    • 是的,看看你方法的参数。只需发送类型 struct SysDesc。不输入 dev_addr
    • 谢谢我把它改成了'power_mode_sleep((struct SysDesc *) &sys_desc_g);'它解决了我的问题
    猜你喜欢
    • 2012-05-19
    • 2014-04-22
    • 2012-05-07
    • 2012-07-13
    • 2013-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多