Macros 有关宏定义和头文件的错误
我正在做一个基于MSP430微芯片的项目,使用IAR编译器。下面是简化的问题: 在我的项目中,我有3个文件: 在时钟中。h:Macros 有关宏定义和头文件的错误,macros,header,Macros,Header,我正在做一个基于MSP430微芯片的项目,使用IAR编译器。下面是简化的问题: 在我的项目中,我有3个文件: 在时钟中。h: #define MCLK_8MHZ void clk_init(void); #include "clock.h" void clk_init(void) { #ifdef MCLK_8MHZ #define delay_ms(x) __delay_cycles((long)(1000000*(double)x/1000.0)) #e
#define MCLK_8MHZ
void clk_init(void);
#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
}
#include "clock.h"
clk_init();
delay_ms(5);
在时钟中。c:
#define MCLK_8MHZ
void clk_init(void);
#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
}
#include "clock.h"
clk_init();
delay_ms(5);
在main.c:
#define MCLK_8MHZ
void clk_init(void);
#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
}
#include "clock.h"
clk_init();
delay_ms(5);
编译器会说函数“delay_ms”隐式声明
我认为它把delay_ms()误认为是函数而不是宏。当然,我可以把它定义为一个实函数。但我认为这会损害时间控制的准确性
如何解决这个问题?在main.c中的include是否需要引号
#include "clock.h"
?
如果这是您唯一的警告,那是另外一个警告。很抱歉,我忘记了这里的引号,但我确实在我的项目中使用了它们……当我尝试链接时,它显示了一个错误。