У меня есть следующий источник с именем lcd.c
.
#include <stdio.h>
#include "lcd.h"
void print_mode(void)
{
printf("%d\n",LCD_MODE);
}
Заголовок lcd.h
содержит определение для LCD_MODE
следующим образом.
#ifndef LCD_H
#define LCD_H
#include "util.h"
#ifndef LCD_MODE
#define LCD_MODE LCD_MODE_8BIT
#endif
void print_mode(void);
#endif /* LCD_H */
Файл util.h
содержит
#ifndef UTIL_H
#define UTIL_H
#define LCD_MODE_8BIT 1
#define LCD_MODE_4BIT 0
#endif /* UTIL_H */
lcd.c
будет скомпилировано отдельно как часть некоторой библиотеки.Я хочу использовать его с приложением main.c
следующим образом.
#include "util.h"
#define LCD_MODE LCD_MODE_4BIT
#include "lcd.h"
int main(void)
{
print_mode();
return 0;
}
Желаемый результат - вывести 0
согласно определению LCD_MODE_4BIT
в main.c
.Тем не менее, 1
печатается, потому что заголовочный файл видит, что LCD_MODE
не определен во время предварительной обработки для lcd.c
.Как мне передать параметр LCD_MODE
в print_mode()
через основное приложение?