我主要使用C ++进行科学计算,最近我一直把自己局限于一个类似C语言的C ++子集;也就是说,除了复杂和STL之外没有类/继承,模板只用于查找/替换各种替换,还有一些其他的东西我不能把它放在我的脑海里。我想知道在我选择和选择使用哪些功能时,是否有任何官方或有文档记录的C ++语言子集供我参考(以及基本原理)。
答案 0 :(得分:4)
有Embedded C++。这听起来与您正在寻找的内容大致相似。
答案 1 :(得分:4)
不久前我收听了这个SE-Radio播客 - Episode 152: MISRA with Johan Bezem,它引入了MISRA,C和C ++的标准指南,以确保更好的质量,试着看看它。
答案 2 :(得分:4)
Google发布其内部C ++样式指南,通常称为此类子集:https://google.github.io/styleguide/cppguide.html。 Ben Maurer,其公司reCAPTCHA被Google收购,其描述如下in this post on Quora:
你基本上可以想到Google的 C ++子集为C加上一点糖:
向结构添加方法的能力
基本单继承。
集合和字符串类
基于范围的资源管理。
他们还发布了一个lint工具cpplint.py.
答案 3 :(得分:2)
GCC开发人员即将允许一些C ++功能。我还没有发现任何官方指导方针,但我很确定他们会定义一些。请查看邮件列表中的initial report。
答案 4 :(得分:0)
然而,C ++中的最新发展(TR1,C ++ 0x)使它非常通用,允许您在C ++中执行命令式,OOP甚至(有限的)函数式编程。像Boost这样的库也使您能够进行非常强大的基于声明模板的元编程。
我认为Boost是第一个在C ++中尝试的东西。它是一个全面的库,它还包含几个模块,使您能够以函数式(Boost.Functional)编程或进行编译时声明性元编程(Boost MPL)。
答案 5 :(得分:0)
OpenCL一直使用C来编写内核,但他们最近添加了(或即将添加)C ++绑定,也许还有Java。 OpenCL省略了C的一些性能抢夺功能。排除了诸如函数指针和递归之类的东西。智能指针和多态也会产生开销。
对C的限制: SIMD programming languages
稍微偏离主题:以下是使用C比较OpenCL和CUDA的良好讨论。 OpenCL or CUDA Which way to go?
答案 6 :(得分:0)
The SEI CERT C++ Coding Standard 给出了在 C++14 中编写安全、可靠和安全系统的规则列表。这不是 C++ 本身的子集,但作为编码标准,就像其他答案一样,它是通过避免不安全、未定义或容易误用的功能(包括 C 的一些常见功能)而有效的子集。