C 多次包含头文件后出现Typedef错误
我正在编写c代码,目标是基于SAME51的Atmel/微芯片处理器。我正在使用Microchip的MPLABX来编译和运行代码 我的头文件多次包含在多个.c文件中。当我将我的C 多次包含头文件后出现Typedef错误,c,embedded,microchip,atmel,mplab,C,Embedded,Microchip,Atmel,Mplab,我正在编写c代码,目标是基于SAME51的Atmel/微芯片处理器。我正在使用Microchip的MPLABX来编译和运行代码 我的头文件多次包含在多个.c文件中。当我将我的triac.h包含到keypad.c中时,我遇到了一个错误: In file included from ../src/keypad.c:23:0: ../src/triac.h:39:54: error: expected ')' before 'uintptr_t' typedef void (*p_triac_isr
triac.h
包含到keypad.c
中时,我遇到了一个错误:
In file included from ../src/keypad.c:23:0:
../src/triac.h:39:54: error: expected ')' before 'uintptr_t'
typedef void (*p_triac_isr_reg)(TC_COMPARE_CALLBACK, uintptr_t);
^~~~~~~~~
../src/triac.h:78:5: error: unknown type name 'p_triac_isr_reg'
p_triac_isr_reg isr_register;
triac.h:
\ifndef TRIAC\H
#定义双向晶闸管
#包括
#包括
#包括“/config/Test/peripheral/eic/plib_eic.h”
#包括“/config/Test/peripheral/tc/plib_tc_common.h”//既然错误原因已在注释中确定,只剩下这种不清楚的地方:
由于相同的头文件包含在多个其他.c
文件中,没有任何错误,因此我被此错误所抛弃。另一个.c
文件没有定义TC\u COMPARE\u回调的.includes
,因此我仍然不确定它以前工作的原因
这样做的原因肯定是,之前您没有在
typedef void (*p_triac_isr_reg)(TC_COMPARE_CALLBACK, uintptr_t);
(就像你更新帖子之前的原始问题一样);这样一来,TC\u COMPARE\u CALLBACK
和uintpttr\u t
只是旧式的、仍然合法的函数参数列表中的任意参数名(没有类型)。看起来TC\u COMPARE\u CALLBACK的定义缺失了。缺少标题?您是否正在关闭#ifndef TRIAC\u H
?@jtilles发布的任何代码都应该能够自行复制问题。请创建一个适当的标题以向我们展示。无关的问题只会分散你所问的实际问题的注意力。你应该保持问题的原样,然后发布你自己问题的答案(或者如果问题作为社区资源没有任何好处,就删除它)。不要编辑问题以包含解决方案。现在作为一个问题,这是没有意义的,因为你已经纠正了代码,它不再显示错误。你在这里错了<代码>参数类型列表指定函数参数的类型,并可能声明其标识符。
。所以像intfoo(int,double)这样的声明代码>是有效的。它不是关于intfoo(int,double)
,它是关于void(*p\u triac\u isr\u reg)(TC\u COMPARE\u CALLBACK,uintptpr\t)
,而你错过了。c
文件没有定义TC\u COMPARE\u CALLBACK
的,因此这不是一种类型。