c - 我想使用此 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;
请帮我配置错误,因为我尝试为结构元素赋值但无法成功
解决方案
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(){};
这只是编译和构建符号数组供您比较和满足您的需求的东西
推荐阅读
- javascript - 通过 AJAX 调用和 Mongoose 将数组添加到 Mongo
- php - 在 Centos 中安装 xdebug 时出错(Yum install install php-devel)
- c++ - 在多个 .cpp 文件中共享变量,每个文件都有 main 函数
- c# - 如何从具有通用返回类型的方法返回具体类的实例
- visual-studio-code - 当我到达屏幕底部时,如何在 VS Code 中自动滚动 Jupyter Notebooks?
- html - 鼠标悬停无法滚动溢出数据
- r - 在for.loop中将R中的多个文件作为字符串读取
- php - 为 Laravel 的 Eloquent 中的每个 id 选择最新的行
- c# - 如何处理asp net core中自定义JsonConverters中的错误?
- javascript - Mongoose - 将嵌入文档添加到现有文档时,Model.updateOne 对我不起作用