经过几个小时的搜索,我没有找到解决问题的方法,下面将对其进行解释。 现在,这些是我的源文件和头文件
timer.h:
#ifndef TIMER_H
#define TIMER_H
#include "types.h"
uint64 timer_ticks;
void init_timer(uint32 freq);
void wait(uint64 ticks);
void wait_s(uint64 seconds);
void timer_h(struct regs* r);
#endif TIMER_H
timer.c
#include "../headers/timer.h"
void init_timer(uint32 freq){
timer_ticks=0;
irq_set_handler(0,timer_h);
}
void wait(uint64 ticks){
uint64 over_ticks=ticks+timer_ticks;
while(timer_ticks<over_ticks);
}
void wait_s(uint64 seconds){
uint64 over_ticks=18*seconds;
wait(over_ticks);
}
void timer_h(struct regs* r){
timer_ticks++;
}
如您所见,所有内容均已正确定义,但我从编译器收到此错误(我使用GCC-8.2)
include/src/timer.c:21:6: error: conflicting types for 'timer_h'
void timer_h(struct regs* r){
^~~~~~~
In file included from include/src/timer.c:1:
include/src/../headers/timer.h:14:6: note: previous declaration of 'timer_h' was here
void timer_h(struct regs* r);
^~~~~~~
对不起,我的英语,谢谢。
答案 0 :(得分:0)
您需要事先声明struct regs;
,否则:
timer.c:21:21:警告:不会声明'struct regs' 在此功能之外可见 [-可见性]
,因此每个struct regs都是不同的类型。打开警告以使编译器为您发现此类问题。