C 多次包含头文件后出现Typedef错误

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

我正在编写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_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
,因此这不是一种类型。