什么是c ++ 0x源文件的默认文件扩展名?

时间:2011-06-19 20:13:53

标签: c++ c++11 file-extension

当我们编程时,C文件扩展名通常以“C”或“CC”或“H”为基础。然后我们迁移到C ++并且引入了新的文件扩展名“cpp”和“hpp”虽然“hpp”不常用(或者至少我认为是这样),那么什么是新的C ++ 0x文件扩展名或者它们有何不同来自c / c ++文件?

6 个答案:

答案 0 :(得分:17)

C ++ 0x只是C ++的新标准,而不是新语言。没有必要更改文件扩展名,我不相信任何人会。

答案 1 :(得分:3)

对我来说,没有理由更改文件扩展名。 C ++ 0x总是C ++,而不是另一种语言。 C和C ++不是同一种语言,所以有另一种扩展是正常的。但在那种情况下,我认为没有理由改变扩展名。

答案 2 :(得分:3)

该语言没有指定任何有关文件扩展名的内容,它并不关心。这完全取决于实施。

我使用的编译器不使用文件扩展名来区分C ++的不同方言。对于这个问题,他们都没有使用文件扩展名来区分C89和C99源代码。例如,在g ++中,指定方言的方法是使用-std-pedantic-ansi命令行选项。

据我所知,此策略将继续:一旦C ++ 0x成为标准并且g ++声明它支持,指定是否需要C ++ 03或C ++ 11 [*]的方式将与-std选项。

您当然可以创建自己的约定(就像您目前在.cc.cpp.C.cxx或其他不同人使用的文件扩展名之间进行选择一样对于C ++)。如果您认为文件扩展名是可行的,并且您使用make,请定义规则:

*.o : *.cpp11
    $(CXX) $(CPPFLAGS) $(CXXFLAGS) -std=c++11 -c

其他构建系统和其他编译器的细节当然会有所不同,但它们都超出了标准的范围,标准只定义了语言,而不是它存储的文件。

如果您担心使用C ++ 0x意外编译为C ++ 03的文件,那么您有几个选项。如果它使用C ++ 03中缺少的C ++ 0x特性,则该文件通常不会编译为C ++ 03,在这种情况下,您不需要做任何事情(除了修复您的构建选项)。否则,您可以故意确保它使用这样的功能,例如确保C ++的版本至少与FDIS一样近:

#if __cplusplus < 201103L
    #error "Wrong version!"
#endif

[*]让我们希望。

答案 3 :(得分:2)

您可以将.c文件和.c文件保存为.h。编译器不会真正关心。这只是一个新标准,而不是一种新语言。

答案 4 :(得分:2)

为什么要有新的扩展?一旦它完成,“新”C ++ 0x将是一个简单的,简单的“旧”C ++。不需要新的扩展或任何东西......它甚至不会被称为“C ++ 0x”或“C ++ 11”,只有区分标准才真正重要。

答案 5 :(得分:0)

您可以使用您想要使用的任何扩展程序。没有变化。