This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 编译器:C11/C++11/C++14发展蓝图

Guru**** 2551110 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/688671/compiler-c11-c-11-c-14-roadmap

工具/软件:TI C/C++编译器

我很高兴看到有人宣布 已向 用于 ARM 和 MSP430的 TI 编译器工具添加了 C++11/14支持。 虽然这是向前迈出的一大步、但仍有许多功能缺失:

•编译器不支持嵌入式 C++运行时支持库。
•该库支持宽字符(wchar_t)、因为为
char 定义的模板函数和类也适用于 wchar_t 例如
、实现了宽字符流类 wios、wiostream、wstreambuf 等(对应于 char 类 ios、iostream、streambuf)。
但是、对于宽字符、没有低级文件 I/O。 此外、C 库接口支持宽字符(
通过 C++头文件) 和 )受到上述 C 库中所述的限制。
•未
实现标准的[tesp.res]和[temp.dep]中所述的模板中的两阶段名称绑定。
•未实现模板的导出关键字。
•函数类型的 typedef 不能包含成员函数 CV-qualifiers。
•不能在类定义之外添加类成员模板的部分专业化。
•仅部分支持目标特定类型的常量表达式。
•不支持新的字符类型(在 C++11标准中引入)。
•不支持 Unicode 字符串文字(在 C++11标准中引入)。
•不支持字面量中的通用字符名称(在 C++11标准中引入)。
•不支持序列点(在 C++11标准中引入)。
•不支持原子操作(在 C++11标准中引入)。
•不支持强比较和交换(在 C++11标准中引入)。
•不支持双向围栏(在 C++11标准中引入)。
•不支持内存模型(在 C++11标准中引入)。
•不
支持原子体和存储器模型的数据依赖项排序(在 C++11标准中引入)。
•不支持传播异常(在 C++11标准中引入)。
•不支持在信号处理程序中允许原子化(在 C++11标准中引入)。
•不支持线程本地存储(在 C++11标准中引入)。
•不
支持动态初始化和并发销毁(在 C++11标准中引入)。 

该列表来自编译器用户指南(spnu151r.pdf)、其中涵盖了比公告页面更多的详细信息。 我可以不使用这些存储器、但我确实希望 C++11存储器模型能够得到支持。

此外、还有其他器件目前没有任何 C++11支持。 最后是完全不支持的 C11。

是否有任何路线图信息可以说明将要解决哪些问题(如果有)、并按什么顺序处理?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我们计划在 C28x 和 C6000器件的编译器中添加对 C++14和 C++11的支持。  此支持将与 ARM 和 MSP430编译器中当前提供的支持相同。   

    至于缺少的功能、我将向您回复。

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    关于这些功能...

    [引用 user="Robert Cowbill"]•不支持原子操作(在 C++11标准中引入)。
    •不支持强比较和交换(在 C++11标准中引入)。
    •不支持双向围栏(在 C++11标准中引入)。
    •不支持内存模型(在 C++11标准中引入)。
    •不支持原子体和存储器模型的数据依赖项排序(在 C++11标准中引入)。
    •不支持在信号处理程序中允许原子化(在 C++11标准中引入)。
    •不支持线程本地存储(在 C++11标准中引入)。
    •不支持动态初始化和并发销毁(在 C++11标准中引入)。

    我们计划将这些功能添加到 ARM 和 MSP430编译器中。  我们无法宣布时间表。  请注意、传播异常在我们计划添加的功能中。

    对于所有其余功能、没有添加它们的计划。

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您提供的额外信息、George。 我很高兴 C++11存储器模型和相关的同步基元已出现在发展蓝图上。

    回顾不受支持的功能列表、有一项我不能真正理解:"不支持序列点(在 C++11标准中引入)。" ANSI C 中存在序列点、并传递到 C++98中。 据我所知、C++ 11中的排序规则没有变化、但术语已更新、以便在多个线程的上下文中有意义。 是否可以在不支持序列点的情况下实现 C++11多线程内存模型?

    最后、要明确一点、是否根本没有实施 C11支持的计划?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    关于序列点... 支持这些功能。  这是手册中的错误。  我也忽略了它。  很抱歉。  我在 SDOWP 系统中提交了 CodeGen-4833、以对手册进行校正。  欢迎您在我的签名中使用下面的 SDOWP 链接进行访问。

    关于 C11... 目前、我们的发展蓝图还没有增加对 C11的支持。

    谢谢、此致、

    乔治