首页 > 解决方案 > 我想使用此 RegisterSymbol() 函数初始化结构,但出现此错误:“{”标记之前的预期表达式?

问题描述

typedef void (*func_get)() ;     //  function pointer

void RegisterSymbol(Symbol *S1)
{
    symbolDic[dicIndex].SymbolId  = S1->SymbolId ;
    symbolDic[dicIndex].get =  S1->get ;
}   

void SymbolInit()                //array initilizer
{
    RegisterSymbol(0x0A ,Get_temp());
    RegisterSymbol({10, &getTempRawAdc()});
}

typedef struct              //structure
{
    uint32_t  SymbolId; 
    func_get get;
} Symbol;

请帮我配置错误,因为我尝试为结构元素赋值但无法成功

标签: ccompiler-errorsmicrocontrollermicrochipmplab

解决方案


typedef void (*func_get)() ;     //  function pointer

void RegisterSymbol(Symbol *S1)
{
    symbolDic[dicIndex].SymbolId  = S1->SymbolId ;
    symbolDic[dicIndex].get =  S1->get ;
}   

当编译器看到Symbol * 类型Symbol尚未定义... 将类型定义放在文件顶部或头文件中

与此代码比较


typedef void (*func_get)();     //  function pointer

void Get_temp();
void getTempRawAdc();

typedef struct              //structure
{
    uint32_t    SymbolId;
    func_get    get;

}   Symbol;

void RegisterSymbol(Symbol* S1, Symbol symbolDic[])
{
    static unsigned int dicIndex = 0;
    symbolDic[dicIndex].SymbolId = S1->SymbolId;
    symbolDic[dicIndex].get = S1->get;
    dicIndex += 1;
    return;
};

void SymbolInit(Symbol dic[])
{
    Symbol local;
    local.SymbolId = 0x0A;
    local.get = Get_temp;
    RegisterSymbol(&local, dic);
    local.SymbolId = 0x0A;
    local.get = Get_temp;
    RegisterSymbol(&local, dic);
    return;
};

void Get_temp(){};
void getTempRawAdc(){};

这只是编译和构建符号数组供您比较和满足您的需求的东西


推荐阅读