源文件的扩展名

时间:2011-08-14 21:13:42

标签: c++ c gcc

编译器从文本文件中检查源代码的语法。为什么需要使用附加信息.c.cpp保存?

我在gcc上试过这个但是它没有编译扩展名不是.c.cpp的文件!!

5 个答案:

答案 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 ++。但这可能已成为过去。