编译器从文本文件中检查源代码的语法。为什么需要使用附加信息.c
或.cpp
保存?
我在gcc上试过这个但是它没有编译扩展名不是.c
和.cpp
的文件!!
答案 0 :(得分:4)
如果您没有使用-x
选项指定语言,GCC(您在标签上命名)会检查文件扩展名。
如果无法识别扩展名,则会将文件直接传递给链接器。
答案 1 :(得分:3)
编译器不会通过查看文本来猜测文件中代码的语言 - 您必须告诉它编译的内容。几乎每个编译器都允许将其作为标志或传递,它将从文件扩展名中推断出来。通过将适当的标志传递给编译器,您可以自由地将.cpp
文件编译为纯C,因此无需推断它。但是,这种情况下,遵循约定会帮助您(较少的标记传递)和其他程序员(从快速ls
知道语言)。
答案 2 :(得分:1)
没必要 - 只是方便。您可以使用任何所需的扩展,但使用标准扩展可以使编译器,操作系统和其他程序员轻松了解文件包含的内容。
答案 3 :(得分:1)
编译器通常使用扩展来决定您希望文件包含哪种语言,因此如果它是.c
,它会将文件视为包含C源代码。如果它是.C
(注意,大写),.cc
,.cpp
等,它会将其视为C ++。根据编译器的不同,它还可能识别其他扩展(例如.pas
,.f
,.cs
等。)
答案 4 :(得分:0)
通常,.c
个文件包含C,.cpp
个文件包含C ++。
编译器通常使用扩展来确定它可以在源文件中找到哪种语言。即使包含纯C但使用.cpp
扩展名保存的文件,通常也会被解释为C ++。虽然在大多数情况下,C ++是C的超集,但这些语言之间存在细微差别,因此代码可能会有不同的处理方式。
您可以告诉大多数编译器将任何文件视为某种语言。如何做到这一点因编译器而异,例如GCC使用-x
选项。
FWIW,我认为GCC也接受.cc
作为C ++。但这可能已成为过去。