为什么使用-E标志和-cpp?(gfortran预处理选项)



我使用以下选项:

touch foo.f90; gfortran -cpp -E -dM foo.f90

,但是当我删除-E标志时,我得到这个错误:

/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o: in function `_start':
(.text+0x24): undefined reference to `main'
collect2: error: ld returned 1 exit status

当我使用'touch'时,文件为空。

-E标志在手册中有描述。

如果使用-E选项,除了预处理之外什么都不做。一些这些选项只有和-E一起才有意义,因为它们导致预处理器输出不适合实际编译。

使编译器打印预处理的源代码,而不是编译它。即通过C预处理器cpp进行预处理。

如果你的源代码不是一个有效的Fortran程序,那么尝试实际编译它(没有-E标志)自然会导致某种错误消息。

最新更新