在新的 C++ Builder 10 Seattle 中编译旧代码时,我遇到了很多模棱两可的错误。例如,对于像log()这样的函数。
调用log(10)会产生以下错误。
[bcc32 错误] E2015 'std::log(float) at c:\program files (x86)\embarcadero\studio\17.0\include\windows\crtl\math.h:394' 和 'std::log( long double) 在 c:\program files (x86)\embarcadero\studio\17.0\include\windows\crtl\math.h:430'
感觉它应该能够处理这种转换。一个警告,很好......但是一个错误并且无法编译?编译器是否在更高版本中对此更加严格?代码最初来自C++ Builder 2010。
其他歧义错误包括预期HWND时的void* ,在TDateTimePicker->Time上进行算术运算(现在必须使用->Time.Val )等。这在之前被编译器吞噬,但现在不是。我很高兴它现在似乎更严格了......但它为旧代码带来了很多修复。