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

标签 c++ c++11 c++14 c++03 code-translation

<分区>

C++11 和 C++14 引入了许多新功能,使程序员的工作更轻松。但是,在各种环境(例如 CUDA)中,对大多数现代 C++ 功能的支持可能很弱或不存在。

许多这些功能(例如 autodecltypeconstexpr、可变参数模板)不会给代码生成带来任何挑战,而且实际上只需要一个理解构造的解析器。原则上,除非使用真正的新功能(例如 thread_local),否则可能会有一个工具可以使用 C++14 代码并将其转换成可以用只理解 C+ 的东西构建的东西+03 语言。

有这样的工具吗? (或者我的假设是否有偏差?)

最佳答案

据我所知,不存在这样的工具。一些 C++ 编译器(原始的 Cfront ,可能还有 Comeau C++)生成 C 代码。

您可以自定义 GCC(例如使用 MELT )以将内部 Gimple 表示转换为 C++ 的一小部分。这需要大量工作(而且生成的 C++ 不可移植)。

也许你应该考虑OpenACC

关于c++ - 将新 C++ 转换为旧 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26564686/

相关文章:

c++ - 何时从非模板和非成员函数返回 T&&

c++ - 使用自动成员函数调试符号错误的解决方法?

c++ - 无法使用 ostream << 重载 stringstream 参数 1 没有已知的转换

c++ - 使用二分查找错了吗?

c++ - 如何在不触及该目录中的文件的情况下查找文件夹更改(使用 Windows 和 C++)

c++ - 如何可移植地将 std::system_error 异常与 std::errc 值进行比较?

c++ - 在异常消息中使用 constexpr

c++ - 在尝试连接时取消 curl_easy_perform

c++ - 制作控制台进度条? ( Windows )

c++ - std::set 带有自定义比较器的操作