2011-03-10 4 views
4

현재 프로젝트 (C 언어)에서 작업 중이고 기본 변수에 #defines을 사용하고 있습니다. 이 변수는 배터리 버퍼 형 램 구조를 레이아웃하는 데 사용됩니다.#defines constants를 대체합니다.

이제 레이아웃이 다른 고객이 생겼습니다. 과거에 우리는 완전히 새로운 소프트웨어를 만들었을 것입니다.
이제 우리는이 조각화에서 벗어나 동일한 코드 기반을 사용하려고합니다.

우리는 #defines 세트를 갖고 구조를 선언하는 일반 라이브러리 (모든 프로젝트에서 사용됨)가 있습니다. 현재 우리는 (그 프로젝트에 대한 #define을 포함하고있는) 커스텀 헤더 파일을 가지고 있으며 이것을 일반 라이브러리의 #define과 비교합니다. 다른 경우 오류가 발생합니다.

우리는 사용자 지정 헤더 파일을 유지하려고하지만 일반 라이브러리에서 #define을 대체하기위한 솔루션을 찾으려고합니다. 하나의 아이디어는 그것들을 일종의 변수로 대체하는 것입니다. 또 다른 종류의 것은 다른 종류의 전 처리기 정의를 사용하는 것입니다.

과거에 우리는 ifdef을 사용했지만 코드는 실제로 어지럽고 끔찍한 것이므로 우리는 그 문제로부터 벗어나려고 노력하고 있습니다.

누구나 해결책이 있습니까?

답변

4
당신은 모든 #define

#ifndef HUI 
# define HUI 1023 
#endif 

에 의해 괄호 다음은에 컴파일 개인에 대한 변경하려는 사람을 배치 할 수 있었다

컴파일의 명령 행 -DHUI=1033.

+0

이 솔루션을 사용하는 프로젝트가 있습니다. 감사 – Seth

2

빠른 해결책 : 정의를 별도의 헤더 파일에 넣으십시오. 메인 파일의 에는 #fidef를 통한 헤더 파일이 포함됩니다.

다른 헤더의 수가 하나보다 많지 않으면 작동합니다.

또 다른 방법 : 위의 같은 구분 헤더 파일, 대신 IFDEF 은 별도의 폴더에 정의를 넣어 별도의 메이크업 파일을 폴더가 포함 경로에 추가했다 통해 포함 선택. -> 깨끗한 코드를 유지하지만 지금은 #customer 메이크

관련 문제