2011-08-14 112 views
2

编译器检查文本文件中源代码的语法。为什么需要使用扩展名.c.cpp来保存它?源文件的扩展名

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

+0

对不起...错字...编辑了问题 –

+2

'gcc -xc hello.txt' – pmg

+0

另请参阅:http://stackoverflow.com/questions/172587/what-is-the-difference-between-g -and-GCC/173007#173007 –

回答

3

编译器不会通过查看文本来猜测文件中代码的语言 - 您必须告诉它编译的内容。几乎每个编译器都允许将其作为标志传递,它将从文件扩展名中推断出它。通过将适当的标志传递给您的编译器,您可以自由地将.cpp文件编译为纯C文件,因此无需推断它。但是,这是一种情况,下面的惯例可以帮助你(减少旗帜传递)和其他程序员(从快速ls知道语言)。

4

如果您没有使用-x选项指定语言,GCC(您将其命名为您的标签)会检查文件扩展名。

如果扩展名未被识别,则该文件被直接传递给链接器。

1

这不是必要的 - 只是方便。您可以使用任何您想要的扩展名,但使用标准扩展名可以让编译器,操作系统和其他程序员轻松知道文件包含的内容。

1

编译器通常使用扩展名来决定文件所包含的语言,因此如果它是.c,它会将该文件视为包含C源代码。如果它是.C(注意,大写),.cc,.cpp等,它会将其视为C++。根据不同的编译器,它也可能认识其他扩展(例如,.pas.f.cs等)

0

通常,.c文件包含C和.cpp文件包含C++。

编译器经常使用扩展名来确定它可以在源文件中找到哪种语言。即使是包含纯C但保存为.cpp扩展名的文件,通常也会被解释为C++。尽管大多数情况下,C++是C的超集,但这些语言之间存在细微的差异,因此代码可能会有所不同。

您可以告诉大多数编译器将任何文件视为某种语言。编译器与编译器的不同之处在于,GCC使用-x选项。

FWIW,我认为GCC也接受.cc作为C++。但这可能已成为过去。