Macros 有关宏定义和头文件的错误

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

我正在做一个基于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))  
    #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"
?


如果这是您唯一的警告,那是另外一个警告。

很抱歉,我忘记了这里的引号,但我确实在我的项目中使用了它们……当我尝试链接时,它显示了一个错误。