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

what is the default file extension of c++0x source files?

本文关键字:扩展名 是什么 文件 默认 源文件 c++0x      更新时间:2023-10-16

当我们编程C时,文件扩展名通常基于"C"、"CC"或"H"。然后我们迁移到C++,引入了新的文件扩展名"cpp"answers"hpp",尽管"hpp"并不常用(或者至少我认为是这样),那么什么是新的C++0x文件扩展名,或者它们与C/C++文件有何不同?

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

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

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

我使用过的编译器不使用文件扩展名来区分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

让我们满怀希望。

您可以将c++文件保存为.c,将头文件保存为.h。编译器不会真正在意。这只是一种新的标准,而不是一种新语言。

为什么要有一个新的扩展?一旦完成,"新"C++0x将是一个简单、普通的"旧"C++。不需要新的延期或其他什么。。。它甚至不再被称为"C++0x"或"C++11",只有在区分标准非常重要的情况下。

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