有人可以解释这个Clang参数如何工作吗?

时间:2018-12-08 10:58:01

标签: clang clang++ llvm-clang

在搜索Google时,我发现下面的命令可以显示clang的默认包含路径,但是它如何工作?我已经查看了帮助页面,并且知道每个参数的含义,但是我不明白这些参数如何协同工作,尤其是-c++之间的-v

clang++ -E -x c++ - -v < /dev/null

1 个答案:

答案 0 :(得分:0)

objectValues(obj) { if(obj){ return Object.values(obj); } 是要运行的程序的名称。

["teams",{"members":{"-LT8U_zn5T9HuSlh03lw":{"name":"Andrius"}},"name":"Frontas","tasks":{"-LT8UbPIJMrR52P4hvHJ":{"name":"Jobas","pt":5},"-LT8UcOAvqPk_o3fUl7y":{"name":"Jobas2","pt":5}}},{"members":{"-LT8UenQm-WzElOQhIrX":{"name":"Tomas"}},"name":"Backas","tasks":{"-LT8UfmIezqiMDv3WCpA":{"name":"Jobas3","pt":5}}},{"members":{"-LT986cZrN6Q1sqIjMZF":{"name":"AAA"}},"name":"Tetas","tasks":{"-LT988EvCySLOutd5AVK":{"done":true,"name":"Jobas","pt":15},"-LT989cIEqr4ObqNyfiA":{"done":false,"name":"XX","pt":16}}}] 是一个告诉clang在预处理后停止的选项(即,它不会运行实际的编译器或链接器,而只会运行预处理器)。

clang++是一种语言替代选项。它告诉clang输入文件应解释为C ++源代码(默认行为是从扩展名中检测文件类型,例如-E-x c++)。

我认为

.cpp的意思是“冗长”。它告诉clang在编译过程中打印更多信息。

.o不是一个选项;它是输入文件的名称。与许多其他工具一样,输入文件名-v告诉clang从其标准输入中读取内容。

最后,-是I / O重定向。它告诉Shell将clang的标准输入连接到-(实际上是一个空文件)。

最后两部分有点round回绕:我们不必告诉clang从stdin读取并将stdin重定向到< /dev/null,而是可以告诉clang直接从/dev/null读取:

/dev/null

无论如何,关键是要预处理(/dev/null)一个空文件(clang++ -E -x c++ -v /dev/null ),就好像它是C ++代码(-E)。