큰 프로젝트 (C)에서 코드 조각을 잘라 냈습니다. 이 코드에는 많은 곳에서 많은 매크로가 정의되어 있습니다. 그 중 일부는 원래의 더 큰 코드베이스에서만 사용되며 잘라낸 코드 부분에서는 사용되지 않습니다.내 코드에서 사용하는 매크로를 빠르게 결정하는 방법은 무엇입니까?
실제 사용중인 매크로와 사용하지 않는 매크로를 신속하게 확인하고 싶습니다. 그렇지 않은 매크로를 신속하게 제거하고 싶습니다. 나는 그것들을 사용하는 코드 경로가 받아 들여지는지 여부에 상관하지 않는다. (즉, if (1+1 == 3) { MY_MACRO(a,b,c); }
은 내가 염려하는 한 사용이다.)
가장 좋은 방법은 전처리이다. . -E와 모든 어떻게 든 매크로를 언급 소스 위치 주석을 찾아
참고 :. 당신은 또한 사용의 기능을 나열하는 솔루션이있는 경우
- , 괜찮아요 너무
- 있어 나는 오직 특정 기능을 직접 호출한다. 코드를 프로젝트에서 잘라냅니다. 솔루션은 많은 실제로 엔트리 포인트에서 호출되는 기능하는 사람들에게 나열된 매크로를 제한 할 수있는 경우에, 그것은 더 나은입니다
- 내 코드를 컴파일하고 그냥 주석
- 실행 (즉, 도움이된다면 당신은 출력을 gprof의 가정 할 수 있습니다) 명백히 실현 가능한 모든 매크로를 처리하는 것은 번거롭다. 그래서 나는 그것을 할 필요가없는 해결책을 원합니다.
- 전 처리기에서 제외 된 코드는 사용되지 않습니다. 하지만이 제한을 준수하지 않는 솔루션을 사용하면 아무 것도없는 것보다 나은 것입니다.
- 나는 "dump the list of preprocessor defines"을 원하지 않지만, 사용중인 을 정의합니다..
모든'# define' 지시어를 주석 처리하고 다시 작성하십시오. 어떤 기호가 불평하는지 확인하십시오. –
Sidenote : 코드가 컴파일되므로 매크로 제거 전과 후에 바이너리를 비교해야합니다. 조건부 컴파일에 사용되는 매크로를 실수로 제거 할 수 있으며 경고 또는 오류가 표시되지 않습니다. – user694733
@Someprogrammerdude : 편집을 참조하십시오. 나는 그것보다 게으르고 싶다. – einpoklum