Visual Studio 头文件导入模块是一个标准的事情吗?

crcmnpdw  于 2023-10-23  发布在  其他
关注(0)|答案(2)|浏览(132)

C++ 20模块保证向后兼容,因此模块可以导入头。
Visual Studio引入了头文件导入模块,这是标准的还是只是VS的东西?

// MyProgram.h
import std.core;
#ifdef DEBUG_LOGGING
import std.filesystem;
#endif
nlejzf6q

nlejzf6q1#

#include是一个预处理器指令,它对目标文件中的文本进行文本复制和粘贴。模块并没有改变这一点。文本复制和粘贴import指令仍然是文本复制和粘贴。
所以,是的,这是标准。假设你的编译器正确地实现了它们。
话虽如此,让头文件为import可能不是一个好主意。如果您想构建一个import集合,供系统中的各种文件使用,只需构建一个适当命名的模块,并获得模块构建系统的好处。可以使用export import模块。

gblwokeq

gblwokeq2#

较新的C标准总是尽可能地保持向后兼容,以防止移植/迁移问题。但是,在移植到新标准时,可能需要更改代码。
可扩展模块是C20标准中的一个新特性。任何使用C20标准构建的编译器(模块功能在C23中也可用)都允许导入模块。
如果你的编译器支持C
20,你需要使用开关:-fmodules-ts(C20 'import'仅在构建命令中指定'-fmodules-ts'时可用)
如果编译器默认不支持C
20,您可以在构建命令中指定开关:-std=c++20
希望这有助于回答你的问题。

相关问题