2013-03-31 3 views
2

여러 포함 및 수십 개의 매크로가있는 헤더 (.h) 파일을 코딩했습니다. 각 매크로 전에 나는이 코딩 한 :매크로를 사용하여 매크로 이름의 사전 존재를 확인하십시오.

#if defined (MACRO_NAME) 
#warning "Macro name MACRO_NAME is already in use. Please rename the macro" 
#endif 

코드의 가독성을 높이기 위해 모든 검사 물건을 않지만, 지시어가 매크로 내에서 허용되지 않는 매크로를 가지고 좋은 것입니다.

#define CHECK_MACRO_NAME(MACRO_NAME) \ 
    #if defined (MACRO_NAME) \ 
    #warning "Macro name "MACRO_NAME" is already in use. Please rename the macro" \ 
    #endif 

당신이이 일을 다른 (더 좋은) 방법을 알고 마십시오

나는 그런 일을하고 싶은

?

+0

나는 당신의 방법이 충분히 잘 읽을 생각합니다. – deepmax

+0

감사합니다 :) 더 좋은 해결책은 없습니다. 아마도 ... –

답변

5

더 나은 방법은 컴파일러에서 검사를 수행하는 것일 수 있습니다.

/* test.c */ 

#define MACRO 

#define MACRO 1 

gcc 사용하여 컴파일 :

$ gcc -c test.c 
test.c:3:0: warning: "MACRO" redefined [enabled by default] 
test.c:1:0: note: this is the location of the previous definition 
+0

이 경고를 표시하지 않는 구형 마이크로 컨트롤러 용 코드를 생성하는 독점적 인 컴파일러를 사용하고 있습니다. 다행히도 여전히 #warning 명령을 지원합니다. 고맙습니다! –

관련 문제