c++0x源文件的默认文件扩展名是什么
what is the default file extension of c++0x source files?
当我们编程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",只有在区分标准非常重要的情况下。
您可以使用任何您想使用的扩展。没有变化。
- 类名后跟括号的类型是什么
- Visual Studio Code "variable " u8 的 C/C++ 扩展名 " " 不是类型名称"
- 谁能告诉我,程序中的错误是什么?该程序仅用于获取文件扩展名
- 是什么导致我的 Python 紧缩 C 扩展崩溃?
- 头文件中.h扩展名的意义是什么?
- 是什么意思,返回值是一个类名,后跟一对空括号
- c++ 模板中的模板<类型名 T、T*> 是什么意思?
- 类名(声明)后的双冒号 - 这是什么意思
- 对于我扩展此程序来计算最高10x10矩阵的倒数的最简单方法是什么
- 在保留类名的同时弃用类模板的正确过程是什么?
- 我如何在不使用扩展名的情况下给出命令行参数,而不是./a.out 3 4,而是./a 3 4
- 在使用语句中指定类名的内容是什么
- 按特定顺序扩展可变参数模板值的最有效方法是什么?
- 扩展std名称空间被认为是未定义行为的原因是什么
- 模板中的类型名 U = equal_to<T>是什么意思?STL<T> equal_to用法
- C++模板实现文件的正确文件扩展名是什么
- Visual Studio在创建.net窗体时指定的窗口类名是什么?
- c++0x源文件的默认文件扩展名是什么
- 如果用户在C++中输入字符串,如何检查此目录中是否有具有该名称的文件以及它的扩展名是什么?
- vector中struct的类型名是什么?