내 소스 코드를 컴파일하는 데 사용되는 컴파일러를 감지하려고합니다. MSVC 또는 GCC ( 예 : http://predef.sourceforge.net/ 참조)를 확인하기 위해 미리 정의 된 매크로를 쉽게 찾을 수 있지만 clang을 확인할 매크로를 찾을 수 없습니다.
clang __CLANG__
이 현재 내 코드를 컴파일하고 있는지 알기 위해 매크로가 매크로를 정의하는지 누군가 알고 있습니까?
답변
컴파일러가 사용하는 모든 사전 정의 된 매크로 목록을 얻으려면 다음을 사용하십시오.
clang -dM -E -x c /dev/null
gcc에 대해서도 똑같이 할 수 있습니다.
답변
strings
+를 사용하여 답을 찾았습니다 grep
.
$ strings /usr/bin/clang | grep __ | grep -i clang
__clang__
답변
이 질문에 대한 답변은 수년 동안 이루어졌지만 Windows 에서 수행되는 방법을 나중에 참조 할 수 있도록 추가하겠습니다 .
echo | clang -dM -E -
GCC와 동일 :
echo | gcc -dM -E -
참고 : 마지막 대시 -
는 실제로 중요합니다! (그렇지 않으면 error: no input files
두 컴파일러 모두 얻을 수 있습니다 )