是否可以通过编译器(例如g ++,clang等)标记或定义将禁用C ++的某些“功能”作为质量控制的手段?
我想在C ++中禁用多重继承和许多其他事情(我认为)弊大于利。
答案 0 :(得分:3)
一旦您选择C ++作为您的语言,您就可以使用C ++作为您的语言。由于某些配置标志,编译器无法合法地开始拒绝合法的C ++程序。
因此,一个显而易见的选择是不使用C ++,而是选择一种语言来提供您感兴趣的功能和安全注意事项。
如果您确实选择继续使用C ++,那么请理解该语言可以让您自己动手。 这是设计。
您可以做的是进行设计审核,代码审查,并利用静态代码检查程序和编译器警告来捕捉各个开发阶段的各种问题。
答案 1 :(得分:0)
您可能可以自定义GCC,例如使用MELT,添加您的其他编码规则验证。然而,这不是微不足道的(可能是几个月的工作,即使对我来说,也是MELT的主要作者)。 GCC的这种假设扩展会发出一些你想要的警告。
所以你传递的旗帜可能会以-fplugin=melt
开头;但是还需要一些额外的工作(在MELT中实现所需的GCC扩展)。
PS。如果你足够认真,能够就这个想法投入(或购买)数月的工作,请与我联系。