sách gpt4 ai đã đi

c++ - OpenMP - OpenMP 'for' 语句中的索引变量必须具有带符号的整数类型

In lại 作者:塔克拉玛干 更新时间:2023-11-03 00:30:31 27 4
mua khóa gpt4 Nike

我是 OpenMP 的新手。我正在尝试为 for 循环使用多个内核,但出现此编译错误:

“错误 C3016:'x':OpenMP 'for' 语句中的索引变量必须具有带符号的整数类型”。

我知道 OpenMP 2.0,它是 Microsoft Visual Studio 2010 的标准(我正在使用的),出于某种原因不支持无符号数据类型,但我不相信我在这个循环中使用了任何无符号数据类型.

这是我的代码的样子:

变量声明:

struct Vertex
{
float x, y;
};

FractalGenerator::Vertex FractalGenerator::_fracStart;
FractalGenerator::Vertex FractalGenerator::_fracEnd;
float FractalGenerator::_pointPrecision = 0.008f;
float FractalGenerator::_scaleFactor = 1;

For 循环:

float _fracStep = _pointPrecision / _scaleFactor;

#pragma omp parallel for
for (float x = _fracStart.x; x < _fracEnd.x; x += _fracStep)
{
for (float y = _fracStart.y; y < _fracEnd.y; y += _fracStep)
{

1 Câu trả lời

看起来 OpenMP 不支持将非整数类型作为 循环中的索引。您有 float x,虽然 trôi nổi 是算术类型,但它不是整数类型。

整数类型是以下之一:bool,char,char16_t,char32_t,wchar_t ,以及任何有符号和无符号整数类型(char,ngắn,số nguyên,dài , Và long long).

您需要转换您的算法以使用其中之一作为您的 循环的索引。这可能有效:

int iEnd = (_fracEnd.x - _fracStart.x) / _fracStep;
int jEnd = (_fracEnd.y - _fracStart.y) / _fracStep;
for (int i = 0; i < iEnd; i++)
{
float x = _fracStart.x + i * _fracStep;
for (int j = 0; j < jEnd; j++)
{
float y = _fracStart.y + j * _fracStep;
// ...
}
}

关于c++ - OpenMP - OpenMP 'for' 语句中的索引变量必须具有带符号的整数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14033280/

27 4 0
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com