我们的整个项目开发都在C中。但是这里和那里有很多字符串操作以及我们做了多少谨慎..我们最终在字符串操作中遇到编码错误,这导致大部分时间用于缓冲区溢出。 。由于程序员的错误,导致损坏等。
这个想法只使用C ++字符串类有多好?所以只是介绍CPP在我们的项目中使用字符串库..这是一个好主意吗?会对性能产生影响吗?或者它只是不好......
请提供您的意见。
答案 0 :(得分:2)
为什么不能只使用string.h中的功能?
您是否考虑过在C中编写一个简单的字符串库并在需要时扩展它?这样,即使你没有立即得到它,你(不同的开发人员)也不会一遍又一遍地犯同样的错误。
或者,您可以将C字符串库作为C ++标准库字符串类的包装。
答案 1 :(得分:1)
关于C ++作为(主要)C超集的历史最好的事情之一就是你可以按照你的建议轻松进入它。你将拥有的最大问题是malloc / free与new / delete。
来吧试一试,你没有什么可失去的。
答案 2 :(得分:0)
C ++主要是后向兼容的,因此将C项目切换到C ++通常相当容易。 (改变你的心态和编程习惯是另一回事。)
需要注意的主要事项是:
return_type f()
的函数(没有参数列表)但函数确实带参数,那么你需要修复它们。在C中,f()
意味着我不知道参数类型是什么。在C ++中,声明中的f()
与f(void)
相同。main()
。 C ++允许在main之前和之后发生一些事情,这可以确保发生这种情况,就像您的C ++库可能期望的那样。extern "C"
rules。在C和C ++行为不同的情况下还存在其他挑剔的差异,但它们不会经常引起问题。
在一些C ++中开始混音是否值得,取决于你和你的团队。
答案 3 :(得分:0)
根据我的经验,即使编译器升级也经常以意想不到的方式破坏代码。这种变化是语言的变化。这是一个重大变化。它没有引入大量错误的可能性有多大,其中许多错误可能对开发人员来说很难发现(但对客户来说很容易)。
另外,我猜你使用C而不是C ++的主要原因是团队经验。回到90年代,我们学到了混合OO和结构化范式的困难方式导致了许多问题,而不是坚持一种范式或另一种范式。如果您的团队没有使用C ++的经验,那么他们将混合在最不适合和导致错误的地方。
我有理由相信,改用C ++编译器会产生巨大的负面影响。从长远来看,你可能会获益,但这可能需要数年时间。
最好的办法是编写一个字符串库(在C中),以帮助解决您所看到的问题。然后强制您的开发人员使用该库。您是否考虑使用snprintf,strncpy等函数的备用安全版本...如果您的编译器已经没有这些函数,那么请使用该接口并编写自己的函数。
如果你真的想使用C ++,那就在你的下一个项目上做。在此期间,请保留此项目的问题列表,以便您可以向管理层出售C ++在下一个项目中比C更好的方法。除非您正在编写易于销售的设备驱动程序或数学算法。