Может кто-нибудь объяснить, как работает этот аргумент Кланга? - PullRequest
0 голосов
/ 08 декабря 2018

При поиске в Google я обнаружил, что эта команда ниже может показать путь включения по умолчанию clang, но как она работает?Я проверил страницу справки и знаю значение каждого аргумента, но не могу понять, как эти аргументы работают вместе, особенно - между c++ и -v.

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

1 Ответ

0 голосов
/ 08 декабря 2018

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++).

...