面向C++模块的开源 IFC SDK

2023-10-15 06:28
文章标签 c++ 模块 sdk 开源 面向 ifc

本文主要是介绍面向C++模块的开源 IFC SDK,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

早在 VS2019 v16.10 版本的时候,我们就官宣了对 C++ 模块(以及几乎所有其他 C++ 20 特性)的全面支持,包括 MSVC 编译器工具集,静态分析,智能感知和调试器等,而实现模块需要将 C++ 代码实现为一种内部的临时表示形式。

今天,我们高兴地宣布将 IFC SDK 开源,它是 Microsoft 对 IFC 规范的一个实现。
IFC 规范将 C++ 程序形式化为适合基于语义操作的数据。
我们开源 IFC SDK 的目的是,希望加速 C++ 模块在 C++ 社区和 C++ 工具生态系统中的广泛使用和实施。

什么是 IFC 以及它的作用是什么?

C++ 模块接口(或头单元)源文件的一种常用编译策略是将源文件(恰好一次)转换为适合在其他源文件中重用的内部表示形式。这种中间形式通常称为构建模块接口(BMI)。IFC文件则是 BMI 概念的实现。IFC 文件是与 C++ 程序的语义有关的所有信息的持久性表示。

除了编译器直接使用C++模块外,还可以通过非编译器工具检查 IFC,以便对C++源文件进行基于语义的探索。这些工具对于探索者了解如何以适合 C++ 模块实现的形式表示 C++ 源代码级构造非常有用。

IFC SDK 的使用

IFC SDK 目前是一个实验项目。它侧重于提供支持 IFC 文件读写的数据类型和源代码。此 SDK 与 MSVC 编译器前端中用于实现 C++ 模块的经过测试的实现相同。
这些数据类型可以直接进行内存映射,以实现可扩展和高效的处理。
该项目还具有用于格式化或查看 IFC 文件的实用程序。我们欢迎并且正在寻找能够弥补SDK和规范之间差距的贡献,以及支持从 C++20 及更高版本开始的 C++ 标准所需的更改。

总结

继续老老实实使用传统 C++ 头文件和类,除非有一天 C++ 模块更合适我的项目。
我是一个既开放又保守的开发人。

最后

Microsoft Visual C++团队的博客是我非常喜欢的博客之一,里面有很多关于Visual C++的知识和最新开发进展。大浪淘沙,如果你对Visual C++这门古老的技术还是那么感兴趣,则可以经常去他们那(或者我这)逛逛。
本文来自:《Open Sourcing IFC SDK for C++ Modules》

这篇关于面向C++模块的开源 IFC SDK的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/215930

相关文章

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

深入理解C++ 空类大小

《深入理解C++空类大小》本文主要介绍了C++空类大小,规定空类大小为1字节,主要是为了保证对象的唯一性和可区分性,满足数组元素地址连续的要求,下面就来了解一下... 目录1. 保证对象的唯一性和可区分性2. 满足数组元素地址连续的要求3. 与C++的对象模型和内存管理机制相适配查看类对象内存在C++中,规

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

在 VSCode 中配置 C++ 开发环境的详细教程

《在VSCode中配置C++开发环境的详细教程》本文详细介绍了如何在VisualStudioCode(VSCode)中配置C++开发环境,包括安装必要的工具、配置编译器、设置调试环境等步骤,通... 目录如何在 VSCode 中配置 C++ 开发环境:详细教程1. 什么是 VSCode?2. 安装 VSCo

python中的与时间相关的模块应用场景分析

《python中的与时间相关的模块应用场景分析》本文介绍了Python中与时间相关的几个重要模块:`time`、`datetime`、`calendar`、`timeit`、`pytz`和`dateu... 目录1. time 模块2. datetime 模块3. calendar 模块4. timeit

Python模块导入的几种方法实现

《Python模块导入的几种方法实现》本文主要介绍了Python模块导入的几种方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录一、什么是模块?二、模块导入的基本方法1. 使用import整个模块2.使用from ... i

C++11的函数包装器std::function使用示例

《C++11的函数包装器std::function使用示例》C++11引入的std::function是最常用的函数包装器,它可以存储任何可调用对象并提供统一的调用接口,以下是关于函数包装器的详细讲解... 目录一、std::function 的基本用法1. 基本语法二、如何使用 std::function

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

【C++ Primer Plus习题】13.4

大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: main.cpp #include <iostream>#include "port.h"int main() {Port p1;Port p2("Abc", "Bcc", 30);std::cout <<

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于