gpt4 book ai didi

c++ - C++语法 header 文件错误

转载 作者:行者123 更新时间:2023-12-02 16:48:04 25 4
gpt4 key购买 nike

我在Visual Studio 2019社区版本中使用了opencv和gdal,我写了一些示例测试来了解opencv和gdal在我的计算机上是否可以正常工作,但是随后头文件出现了一些错误,所有这些错误都没有影响到编译程序以及程序的运行或输出,除了那些头文件语法错误之外,一切都很好,这让我感到非常困惑。我的代码如下:

/*opencv_test*/
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main()
{
Mat image = Mat::zeros(300, 600, CV_8UC3);
circle(image, Point(250, 150), 100, Scalar(0, 255, 128), -100);
circle(image, Point(350, 150), 100, Scalar(255, 255, 255), -100);
imshow("Display Window", image);
waitKey(0);
return 0;
}

错误列表如下所示:
Warning C26451  Arithmetic overflow: Using operator '*' on a 4 byte value and then casting the result to a 8 byte value. Cast the value to the wider type before calling operator '*' to avoid overflow (io.2). opencv_test C:\MSVC_Library\OpenCV\opencv\build\include\opencv2\core    C:\MSVC_Library\OpenCV\opencv\build\include\opencv2\core\mat.inl.hpp    550 

Warning C6294 Ill-defined for-loop: initial condition does not satisfy test. Loop body not executed. opencv_test C:\MSVC_Library\OpenCV\opencv\build\include\opencv2\core C:\MSVC_Library\OpenCV\opencv\build\include\opencv2\core\matx.hpp 553

Warning C26812 The enum type 'cv::AccessFlag' is unscoped. Prefer 'enum class' over 'enum' (Enum.3). opencv_test C:\MSVC_Library\OpenCV\opencv\build\include\opencv2\core C:\MSVC_Library\OpenCV\opencv\build\include\opencv2\core\mat.hpp 66

我希望有人能真诚地回答我的问题。

最佳答案

正如其他人指出的那样,这些只是警告,而不是错误-您的代码将编译并运行。您可以通过键入以下内容,从内置的Visual Studio“帮助”(如果已安装)中获取有关这些警告的含义的信息。 “搜索”字段中的“C26451”;或者,您可以与Google相同。

对于C26812警告,在堆栈溢出here上讨论了无范围enum类型的使用。但是尝试通过修改OpenCV header 来“修复”此问题很可能会给您带来更多问题!我建议在这里可以安全地忽略所有三个警告,因为它们与建议良好的编码“样式”一样重要,而不是指出可能的错误(假设编写OpenCV包的人确实知道他们在说什么)。在做)。

但是,由于您很可能不想修改OpenCV header 中的代码,因此可以改为在包含警告之前暂时禁用警告,然后在所有相关的#include语句之后恢复警告。

在您的情况下,对于您引用的警告,这应该起作用:

#ifdef _MSC_VER // These #pragma lines are MSVC-specific!
#pragma warning(disable:26451) //
#pragma warning(disable:6294) // Disable specified warning numbers
#pragma warning(disable:26812) //
#endif // _MSC_VER

/*opencv_test*/
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc.hpp>

#ifdef _MSC_VER
#pragma warning(default:26451) //
#pragma warning(default:6294) // 'Default' will reset to your project's settings
#pragma warning(default:26812) //
#endif // _MSC_VER

#include <iostream>
//...

关于c++ - C++语法 header 文件错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59675036/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com