clang++
- это имя программы, которую нужно запустить.
-E
- это опция, сообщающая clang об остановке после предварительной обработки (т. Е. Он не будет запускать реальный компилятор или компоновщик, только препроцессор).
-x c++
- опция переопределения языка.Он сообщает clang, что входной файл следует интерпретировать как исходный код C ++ (по умолчанию определяется тип файла по расширению, например .cpp
или .o
).
-v
означает "многословно ", я думаю.Он говорит Clang печатать дополнительную информацию во время компиляции.
-
не вариант;это имя входного файла.Как и во многих других инструментах, имя файла ввода -
указывает clang читать со стандартного ввода.
Наконец, < /dev/null
- это перенаправление ввода / вывода.Он говорит оболочке подключить стандартный ввод clang к /dev/null
(фактически пустой файл).
Последние две части немного обходные: вместо того, чтобы указывать clang читать из stdin и перенаправлять stdin в /dev/null
, мы могли бы просто сказать, что clang читает из /dev/null
напрямую:
clang++ -E -x c++ -v /dev/null
В любом случае, смысл в том, чтобы предварительно обработать (-E
) пустой файл (/dev/null
), как если бы это был C ++код (-x c++
).