隐含的函数声明,即使我已经包含该文件?

时间:2015-05-06 13:19:48

标签: c arduino pwm

我的项目几乎正常,但我得到1

  
    

警告:     "隐含的功能声明' init_phase_correct' [-Wimplicit函数声明]"

  

已经在我的主要

中调用了该函数
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个实现 - 那么为什么它是&#34; Wimplicit-function-declaration&#34;?

1 个答案:

答案 0 :(得分:3)

我知道,包含init_phase_correct()声明的头文件包含一个带有一些自动生成名称(INCFILE1_H_)的include guard。

另外,您没有指定init_phase_correct()是在PWM.h内宣布,还是另一个文件, PWM.h包含

如果没有更多代码,我无法肯定地说,但我的千里眼技能告诉我,INCFILE1_H_可以用作另一个文件中的包含守卫 - PWM.h本身或其他文件,包括之前的文件,包含init_phase_correct()的声明。