我没有看到任何在cppwinrt.exe工具中指定“cppwinrt.exe版本”的开关!
(我的基本假设是cppwinrt.exe工具将C++ 17语法绑定到ABI,我不知道它如何绑定C++ 20或未来的更新版本语法)
类似地,C#/WinRT投影中的cswinrt.exe工具从.winmd文件生成.cs文件。同样的问题也适用,cswinrt.exe工具如何知道使用哪个"C#版本“生成.cs文件?
我也没有看到任何在C#工具中指定“cswinrt.exe版本”的开关!
最终目标:理解“语言版本”如何适合于WinRT语言预测
发布于 2022-03-22 18:39:20
cppwinrt.exe工具不允许您指定C++语言标准。它只是默认为C++17,可以通过特征测试宏选择新的语言特性。
其结果是生成的头文件可以使用任何C++17编译器编译,也可以使用支持后续语言版本的编译器编译。
此时(C++/WinRT版本2.0.210922.5)有四个C++20特性正在使用:
#ifdef __cpp_lib_coroutine指令保护(尽管这实际上只是决定是否包含实验/目录中的coroutine头文件;coroutines自2015年以来就得到了支持)。import,所以这是不受保护的。std::format (在2.0.210922.5中引入),由#ifdef __cpp_lib_format指令保护。从根本上讲,C++/WinRT只是一个C++库。因此,它可以使用任何适合于提供语言自适应实现的技术。
我不知道C#/WinRT如何在内部运行,也不知道C#是如何运行的,所以我不能对此发表评论。
https://stackoverflow.com/questions/71576948
复制相似问题