即使我包含了文件,函数的隐式声明?
implicit declaration of function even though i have included the file?
我的项目快完成了,但我得到了 1
Warning:
"implicit declaration of function 'init_phase_correct' [-Wimplicit-function-declaration]"
在我的主函数中调用了函数
int main(void)
{
volatile char start_flag=0;
uart0_Init ( MYUBRRF );
DDRB |=(1<<PB7);
sei(); //enable global interrupt
initAdc();
data = 'a';
ADCSRA |=(1<<ADIE);
init_phase_correct();
并且 init_phase_correct 包含在
的顶部
#include "PWM.h"
链接到
/*
* IncFile1.h
*
* Created: 23-04-2015 11:30:38
* Author: Martin Egsdal
*/
#ifndef INCFILE1_H_
#define INCFILE1_H_
extern void init_fastPWM();
extern void init_phase_correct();
extern void init_ph_frPWM();
extern void init_phase_correct_alt();
#endif /* INCFILE1_H_ */
在 C 文件中是:
void init_phase_correct(){
TCCR0A|=(1<<COM0A1)|(1<<WGM00); //Clear OC0A on Compare Match when up-counting. Set OC0A on Compare Match when down-counting
TCCR0B =(1<<CS01); //prescalling by 8
OCR0A =102; //40 duty cycle
TCNT0= 0;
DDRB |= (1<<DDB7);// configure OC0A pin for output
}
当我在主菜单中右键单击 init_phase_correct() 时,我可以看到 2 个实现 - 那为什么是 "Wimplicit-function-declaration"?
我明白了,你的头文件包含了 init_phase_correct()
的声明,并用 include guard 和一些自动生成的名称 (INCFILE1_H_
) 包裹起来。
此外,您没有指定 init_phase_correct()
是在 PWM.h
中声明还是在另一个文件中声明,即 包含在 PWM.h
中.
没有更多的代码,我不能肯定地说,但我的洞察力告诉我,INCFILE1_H_
可以用作另一个文件中的 include guard - PWM.h
本身或另一个,即被包含在 before 文件中,该文件包含 init_phase_correct()
.
的声明
我的项目快完成了,但我得到了 1
Warning: "implicit declaration of function 'init_phase_correct' [-Wimplicit-function-declaration]"
在我的主函数中调用了函数
int main(void)
{
volatile char start_flag=0;
uart0_Init ( MYUBRRF );
DDRB |=(1<<PB7);
sei(); //enable global interrupt
initAdc();
data = 'a';
ADCSRA |=(1<<ADIE);
init_phase_correct();
并且 init_phase_correct 包含在
的顶部#include "PWM.h"
链接到
/*
* IncFile1.h
*
* Created: 23-04-2015 11:30:38
* Author: Martin Egsdal
*/
#ifndef INCFILE1_H_
#define INCFILE1_H_
extern void init_fastPWM();
extern void init_phase_correct();
extern void init_ph_frPWM();
extern void init_phase_correct_alt();
#endif /* INCFILE1_H_ */
在 C 文件中是:
void init_phase_correct(){
TCCR0A|=(1<<COM0A1)|(1<<WGM00); //Clear OC0A on Compare Match when up-counting. Set OC0A on Compare Match when down-counting
TCCR0B =(1<<CS01); //prescalling by 8
OCR0A =102; //40 duty cycle
TCNT0= 0;
DDRB |= (1<<DDB7);// configure OC0A pin for output
}
当我在主菜单中右键单击 init_phase_correct() 时,我可以看到 2 个实现 - 那为什么是 "Wimplicit-function-declaration"?
我明白了,你的头文件包含了 init_phase_correct()
的声明,并用 include guard 和一些自动生成的名称 (INCFILE1_H_
) 包裹起来。
此外,您没有指定 init_phase_correct()
是在 PWM.h
中声明还是在另一个文件中声明,即 包含在 PWM.h
中.
没有更多的代码,我不能肯定地说,但我的洞察力告诉我,INCFILE1_H_
可以用作另一个文件中的 include guard - PWM.h
本身或另一个,即被包含在 before 文件中,该文件包含 init_phase_correct()
.