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

时间:2013-07-18 12:38:12

标签: macros header

我正在使用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()误认为是函数而不是宏。当然,我可以将其定义为一个真正的功能。但我认为这会损害时间控制的准确性。

如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您是否需要在main.c中包含引号,如:

#include "clock.h"

如果这是你唯一的警告,那就是别的了。