将新C++转换为旧C++

Translating new C++ to old C++

本文关键字:C++ 转换 将新      更新时间:2023-10-16

C++11和C++14引入了许多新功能,使程序员的生活更轻松。然而,在各种环境(例如CUDA)中,对最现代C++功能的支持可能很弱或根本不存在。

其中许多特性(例如autodecltypeconstexpr、可变模板)不会给代码生成带来任何挑战,实际上只需要一个理解结构的解析器。原则上,除非使用诚实的新功能(例如thread_local),否则可能会有一种工具接受C++14代码,并将其转换为可以用只懂C++03语言的东西构建的东西。

这样的工具存在吗?(或者我的假设偏离了基础?)

AFAIK不存在这样的工具。一些C++编译器(最初的Cfront,也许还有Comeau C++)生成了C代码。

您可以自定义GCC(例如使用MELT),将内部Gimple表示转换为C++的一个子集。这是一项艰巨的工作(并且所发出的C++将不可移植)。

也许您应该考虑OpenACC