x86 gcc 4.4.1에서 문제없이 컴파일하는 코드 조각이 있지만 "상수가 아닌 숫자가 올 것으로 기대되는 많은 상수"오류가있는 blackfin gcc 4.1.2와 함께 실패합니다. 일부 미리 정의 된 매크로와 충돌하는 변수 이름이 있음을 알 수 있습니다. cpp 파일의 특정 줄에 정의 된 매크로를 볼 수 있습니까?C 코드를 컴파일하는 동안 정의 된 매크로를 볼 수 있습니까?
8
A
답변
11
gcc -dM -E myfile.cpp
-dM
스위치가 주어진 파일에 정의 된 모든 매크로를 덤프 GCC를 알려줍니다 (이 언어 표준뿐만 아니라 GCC 자체를 정의하는 추가 매크로에 의해 정의 될 필요가 매크로의 목록을 포함합니다).-E
스위치는 파일을 사전 처리 한 후에 GCC가 컴파일을 계속하지 않도록 지시합니다. CPP 파일의 소정의 행에서 정의 된 매크로 목록을 확인하기 위하여
, 먼저 소정의 매크로 (컴파일러에 의해 정의 된 매크로) 중 하나를 필터링하는 것이 더 쉬울 수있다. BASH에서는 다음을 할 수 있습니다.
LINE=40
FILE=myfile.cpp
HEADER=myfile.h
diff <(grep -h '#include[[:space:]]*<.*>' ${FILE} ${HEADER} | gcc -dM -x c++ -E -) <(cat ${FILE} | head -n ${LINE} | gcc -x c++ -dM -E -)
표준 시스템 헤더 또는 프레임 워크로 정의 된 모든 매크로를 필터링해야합니다. 추가 부분 인 -x c++
은 GCC에 입력을 C++ 소스 [전처리가 필요함]로 해석하도록 지시합니다. 이는 파일 이름의 확장자를 기반으로 결정할 수 없기 때문입니다 (소스 코드는를 통해 GCC로 전달됩니다). stdin).
관련 문제
- 1. 인터페이스의 메서드를 볼 때 "최종"C# 코드를 볼 수 있습니까?
- 2. C++에서 컴파일하는 동안 디버그 코드를 제거하는 방법은 무엇입니까?
- 3. Eclipse 편집기 창에서 정의 된 C 매크로를 # 정의하는 방법이 있습니까?
- 4. 디버깅하는 동안 C# foreach 루프의 반복 컬렉션에 "볼"수 있습니까?
- 5. C++ 코드를 컴파일하는 동안 ios :: nocreate 오류가 발생합니다.
- 6. Pro * C 코드를 컴파일하는 단계
- 7. cygwin에서 ocr 코드를 컴파일하는 동안 해결책을 얻을 수있는 사람이 있습니까?
- 8. Java 또는 C++ App에서 생성 된 코드를 컴파일하는 방법
- 9. Mono의 코드를 어떻게 볼 수 있습니까?
- 10. 문자열에로드 된 erlang 코드를 컴파일하는 방법은 무엇입니까?
- 11. 코드를 작성하는 동안 완전히 볼 수없는 버전 제어 시스템이 있습니까?
- 12. 부분적으로 정의 된 변수가 호출하는 erb 템플릿에서도 볼 수 있습니까?
- 13. 다른 PHP 파일에 정의 된 변수를 어떻게 볼 수 있습니까?
- 14. 개체의 코드를 볼 수 없습니다.
- 15. flex에 정의 된 C 토큰 파일이 있습니까?
- 16. 컴파일러 생성 된 코드를 볼 수있는 도구
- 17. C++ 매크로를 조건부로 컴파일하려면?
- 18. 누락; before identifier VC9에서 VC6 코드를 컴파일하는 동안
- 19. 3.0.2에서 2.1.2 코드를 컴파일하는 동안 컴파일 오류가 발생했습니다.
- 20. HALT_ONCE 매크로를 만들 수 있습니까?
- 21. fattach()를 사용하여 c 코드를 컴파일하는 방법
- 22. 컴파일하는 동안 VB6 오류가 발생했습니다.
- 23. C# 프로젝트에 C 코드를 포함시킬 수 있습니까?
- 24. 앱 발명가가 생성 한 코드를 볼 수 있습니까?
- 25. 몇 가지 속도 매크로를 정의 할 수 있습니까?
- 26. 교차 사이트 지원을 사용하여 GWT 코드를 컴파일하는 동안 오류가 발생했습니다.
- 27. 왜 PHP 소스 코드를 온라인으로 볼 수 있습니까?
- 28. C++ 매크로를 디버깅하는 일반적인 방법이 있습니까?
- 29. 3.1 API를 사용하는 동안 전화 에뮬레이터를 어떻게 볼 수 있습니까?
- 30. 파이썬의 사전은 C++에서지도로 볼 수 있습니까