Kis*_*chy 8 c++ c++20 c++-modules
我已经看到.ixx、.cxx、.cpp并.cppm与 c++20 模块一起使用。
我想给出更详细的答案,因为尝试避免由于早期对新生功能的误解而导致未来项目中的不一致可能是个好主意。
GCC 使用该名称来指定其 C++20 模块管理的事实cxx-modules使一些人认为该.cxx扩展是 Microsoft 的 GCC 对应项.ixx。我认为未来可能会出现混乱,因为当每个人都了解什么是接口和实现模块单元时,一些开发人员会觉得很自然,比如选择.ixx接口、.cxx实现以及.cpp其他可能使用模块但既不是接口也不是实现的文件(例如main.cpp)。另一方面,其他一些开发人员已经表明他们打算用于.cxx接口以及用于实现或非模块文件的不同(更常见)的东西。这将使我们遇到不同的项目给出相互矛盾的.cxx扩展含义的情况(特定于接口与特定于实现)。
当然,每个人都使用他想要的扩展名来完成任何事情,但让我们至少描述每个编译器/开发工具包的完整原理,以便给出有关一致命名模式的提示。
微软.ixx在其开发工具中保留了接口模块单元的扩展,并.cpp在其文档中用于实现单元(但我不知道它是否也会接受.cc或.cxx代替.cpp)。编译器还提供/interface参数以允许声明具有任意扩展名的模块接口文件。
在 CLANG 中,接口模块单元有四种可能的扩展,分别是:.cppm、.cxxm、.c++m和.ccm。.cpp它们是、 、.cxx的相应对应项.c++,.cc您应该将它们用于实现模块单元和非模块单元。.ccm(在急于声称“哦,那个可爱的三字母扩展非常适合我的模块!”之前请考虑一下)
在 GCC 中,接口模块单元没有特殊的扩展名,因此区分接口和实现的正确方法是使用相同的文件扩展名,但应用不同的后缀(例如 :gear_interface.cc和gear_implementation.cc)。或者,您可以使用特定于接口的新扩展,这要归功于参数-x c++,例如.ixx,.ccm,或者.mpp似乎越来越多地使用的著名扩展,尽管尚未在任何全球工具中得到正式认可。但请尽量不要为此目的保留历史性的 C++ 扩展;十年后,您会很高兴不必在具有矛盾文件命名的项目之间切换。(我区分“不同”和“矛盾”)
现在了解更多信息,请随意选择/制作您最喜欢的解决方案。
| 归档时间: |
|
| 查看次数: |
3183 次 |
| 最近记录: |