在搜索Google时,我发现下面的命令可以显示clang
的默认包含路径,但是它如何工作?我已经查看了帮助页面,并且知道每个参数的含义,但是我不明白这些参数如何协同工作,尤其是-
和c++
之间的-v
。
clang++ -E -x c++ - -v < /dev/null
答案 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
)。