c - 如果宏未定义,如何闪烁错误?

标签 c avr avr-gcc winavr avr-studio4

如果程序本身未定义,我希望我的程序闪现编译时错误,例如“LCD_PORT 未定义”。为此,我像这样修改了头文件

.
.
.
#if LCD_IO_MODE
#ifndef LCD_PORT
#error LCD_PORT not defined //(e.g. #define LCD_PORT PORTA/B/C/D)
#endif

#define LCD_DATA0_PORT   LCD_PORT     /**< port for 4bit data bit 0 */
#define LCD_DATA1_PORT   LCD_PORT     /**< port for 4bit data bit 1 */
.
.
.
...

但即使在定义了 LCD_PORT 之后(如下面的程序),它也会闪烁错误。

#include <avr/io.h>
#include <lcd.h>

#define LCD_PORT PORTA

int main(void)
{
    lcd_init(LCD_DISP_ON_CURSOR); 
    lcd_home();
    lcd_puts("Hello world!!");
}

最佳答案

因为您仅在包含头文件之后定义宏。你需要的是这个:

#define LCD_PORT PORTA

#include <lcd.h>

关于c - 如果宏未定义,如何闪烁错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15985492/

相关文章:

c++ - 多个文件出现错误 C2027 : use of undefined type,

c++ - GCC编译器错误: -Werror=stringop-truncation: no option

c++ - 使用AVRstudi基于ATMega8的计算器

c++ - 适用于8位MCU的更快的16位乘法算法

c++ - 链接静态库时 undefined reference

gcc - AVR 内联汇编 : registers to variables?

c - 如果 -0.0 之后的下一个可表示值是 +0.0,那么为什么 nextafter(-0.0, INFINITY) 不返回 +0.0?

c - 将字符串数组传递给要更改的函数

c - 非 int 类型的位字段?

assembly - 如何反转一个字节