2013-07-03 2 views
0

두 가지 다른 LCD 초기화 작업을하고 있습니다. 하나는 교수의 하드웨어에서 나온 것이고 다른 하나는 내 것입니다. 나는 매크로 정의를 사용하여 두 기능 사이를 전환하려면 :매크로가있는 두 함수 정의간에 변경

#ifndef LCD_Professor 

void InitLCD (uint8_t N, uint8_t F, uint8_t D, uint8_t C, uint8_t B, uint8_t ID, uint8_t SH) { 
... 
} 

#endif 

#ifndef LCD_Group3 

void InitLCD (uint8_t N, uint8_t F, uint8_t D, uint8_t C, uint8_t B, uint8_t ID, uint8_t SH) { 
... 
} 

#endif 

은 내가 파일의 시작 부분에 #DEFINE의 LCD_Group3를 사용한 경우, 나는이 두 기능 사이에서 선택할 수 있다고 기대했다. 진실은, 나는 결코이 매크로들과 함께 일한 적이 없다는 것이다. 이게 효과가 있니? 또는 오히려이 작업을 수행하는 다른 방법이 있습니까?

감사합니다.

답변

1

#ifdef LCD_Professor 
... 
#endif 

#ifdef LCD_Group3 
... 
#endif 

은 하나 또는 다른을 사용하려면, 당신이 파일을 포함하기 전에 다음 #define LCD_Group3 또는 LCD_Professor을 수행 할 수 있습니다, 그 중 하나는 당신이 사용하고자하는 선택하지 않는 #ifndef해야한다.

+0

감사합니다. 얼마나 어리석은 짓이야! – notsag2d

0

매크로를 사용해야합니까? 다른 방법은 두 함수를 별도의 파일에 넣고 원하는 함수 만 빌드하는 것입니다. 또는 다른 실행 파일로 빌드하고 실행할 때 원하는 파일을 선택할 수도 있습니다.

이러한 작업에 익숙하지 않은 경우 Makefile (Makefile이라는 이름의 파일)이 필요합니다. 예를 들어, 일반적인 파일 APP.C에서 두 개의 응용 프로그램 '교수'와 '스터드'를 구축하는 prof.c 및 stud.c에 두 가지 구현 : - 탭용 각 전에이 있음을

all: stud prof 
CFLAGS = -g -Wall 
CC = gcc 

prof: prof.o app.o 
     $(CC) $^ -o [email protected] 

stud: stud.o app.o 
     $(CC) $^ -o [email protected] 

주 $ (CC), 공백이 아님

+0

나는 그것에 익숙하지만 마이크로 컨트롤러에 코드를 다운로드하는 소프트웨어를 사용하고 있기 때문에 여전히 어떻게 작동하는지 배우고있다. (LPCXpresso) – notsag2d

관련 문제