" - // dev/null"在"gcc -dM -E - </ dev/null"中的含义是什么?

Nan*_*iao 7 c c++ bash gcc

我知道用的

gcc -dM -E - < /dev/null
Run Code Online (Sandbox Code Playgroud)

可以得到预定的宏gcc,但是什么呢

- < /dev/null
Run Code Online (Sandbox Code Playgroud)

这个命令意味着什么?根据我的理解,背后应该有一个选项-.我试图搜索gcc手册,但找不到答案.

Jef*_*oom 12

就其本身而言,-意味着"从标准输入读取而不是在此命令行上提供的文件名".这是一个常见的Unix惯例.

所述< /dev/null重定向从标准输入/dev/null,它是长度为0的这样GCC将读取标准输入,立即到达输入的结束,使其只打印预定义的宏(以及在不输入任何宏,因为没有任何输入).这是标准的shell语法,不是特定于GCC的调用.

总之,它们是一种不为期望某些进程提供任何输入的方法.