кто-то может разбить эту строку на части gcc -E -dM - </ dev / null - PullRequest
5 голосов
/ 07 октября 2009

Только что наткнулся на этого парня, который оставил меня ошеломленным:

gcc -E -dM - </dev/null

Эта часть меня смущает:

 - </dev/null   

Ответы [ 2 ]

14 голосов
/ 07 октября 2009

Это дает список всех предопределенных макросов в gcc. -E означает запустить препроцессор. -dM означает сброс предопределенных макросов из препроцессора. Параметр - предназначен для чтения из стандартного ввода, а / dev / null просто передает пустой файл с исходным кодом.

3 голосов
/ 07 октября 2009

Бит "</ dev / null" находится на уровне оболочки и не относится к gcc </p>

< defines input file
> defines ouput file for std out, 
>> defines a output for std out that will be appended to,
| sends std out output to another process on it's std in

Я забыл синтаксис, но вы также можете указать std err, например & 2>

Имя в скобках - это имя файла, где / dev / null - пустой файл

мужчина должен помочь вам получить правильную помощь по этим вопросам.

В данный момент у меня нет доступа к gcc, если исходить из другого комментария, который читает из std in, тогда и выражение equivelant равно

gcc -E -dM /dev/null
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...