为什么 clang++ 编译这个:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv) {
printf("Hello World!\n");
return EXIT_SUCCESS;
}
并且不想编译这个:
#include <iostream>
int main()
{
std::cout << "FFFF\n";
return 0;
}
???
命令行:
clang++ -c hello.cpp -emit-llvm -o hello.bc
像这样发出太多错误:
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\INCLUDE\xrefwrap:222:22:
note:
expanded from macro '_CLASS_RESULT_OF_PMF_OPT_0X'
__thiscall, X2, X3, X4)
Windows 7 64、clang-3.2、llvm-3.2、VS2012
=====更新=====
命令行(带 -v):
clang++ -c hello.cpp -emit-llvm -o hello.bc -v
我得到什么:
clang 3.2 版 (tags/RELEASE_32/final)
目标:i686-pc-win32
线程模型:posix
"C:/llvm/clang/build/bin/Debug/clang++.exe" -cc1 -triple i686-pc-win32 -emit-ll
vm-bc -disable-free -main-file-name 321.cpp -mrelocation-model static -mdisable-
fp-elim -fmath-errno -masm-verbose -mconstructor-aliases -target-cpu pentium4 -m
省略叶帧指针 -v -coverage-file "C:\llvm\3211.bc" -resource-dir "C:/
llvm/clang/build/bin/Debug\..\lib\clang\3.2" -fmodule-cache-path "C:\Users\
\kpdev\AppData\Local\Temp\clang-module-cache" -internal-isystem C:/llvm/clan
g/build/bin/Debug/../lib/clang/3.2/include -internal-isystem "C:\Program Files
(x86)\Microsoft Visual Studio 11.0\VC\include" -internal-isystem "C:\Program
文件 (x86)\Windows Kits\8.0\\include" -std=c++11 -fdeprecated-macro -ferro
r-limit 3 -fmessage-length 80 -mstackrealign -fms-extensions -fms-compatibility
-fmsc-version=1300 -fdelayed-template-parsing -fobjc-runtime=gcc -fobjc-default-
综合属性 -fcxx-exceptions -fexceptions -fdiagnostics-show-option -f
颜色诊断 -o "C:\llvm\3211.bc" -x c++ "C:\llvm\321.cpp"
clang -cc1 版本 3.2 基于 LLVM 3.2svn 默认目标 i686-pc-win32
#include "..." 搜索从这里开始:
#include <...>搜索从这里开始:
C:/llvm/clang/build/bin/Debug/../lib/clang/3.2/include
C:\Program 文件 (x86)\Microsoft Visual Studio 11.0\VC\include
C:\Program Files (x86)\Windows Kits\8.0\include
搜索列表结束。
在 C:\llvm\321.cpp:1 包含的文件中:
在 C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\inc 中包含的文件中
lude\iostream:6:
在 C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\inc 中包含的文件中
lude\istream:6:
...ETC。
接着:
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\type_traits:1072:
33:错误:
'_Ty' 不引用值
_HAS_TRIVIAL_MOVE_CONSTRUCTOR(_Ty)
^
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\type_traits:52:38
: 笔记:
从宏“_HAS_TRIVIAL_MOVE_CONSTRUCTOR”扩展而来
&& __has_trivial_move_constructor(_Ty)>
^
...ETC。
所以...-internal-isystem指向错误的路径。如何改变它?