我正在使用IAR编译器开发基于MSP430微芯片的项目。这是简化问题:
在我的项目中,我有3个文件:
在 clock.h:
#define MCLK_8MHZ
void clk_init(void);
在 clock.c:
#include "clock.h"
void clk_init(void)
{
#ifdef MCLK_8MHZ
#define delay_ms(x) __delay_cycles((long)(1000000*(double)x/1000.0))
#endif
#ifdef MCLK_12MHZ
...
#endif
}
在 main.c:
中#include "clock.h"
clk_init();
delay_ms(5);
编译器会说隐式声明 function“delay_ms”
我认为它将delay_ms()误认为是函数而不是宏。当然,我可以将其定义为一个真正的功能。但我认为这会损害时间控制的准确性。
如何解决这个问题?
答案 0 :(得分:0)
您是否需要在main.c中包含引号,如:
#include "clock.h"
如果这是你唯一的警告,那就是别的了。