3

我正在尝试在 C++-AMP 中编写代码,以将多个 2D 向量复制到 GPU 内存中进行处理。但是,一旦我从表达式开始,extent<2> eM(100,100);我就会遇到这个错误:“范围”是模棱两可的。与 C++ 中的任何其他范围表达式是否有冲突?是因为我使用的库吗?这些都是我包含的所有库和命名空间,我不能包含很长并且会令人困惑的代码。

#include "stdafx.h"
#include <Windows.h>
#include <stdint.h>
#include <amp.h>
#include <Shlwapi.h>
#include <vector>
#include <random>
#include <iostream>
using std::endl;
using std::cout;
#include <iomanip>
#include "timer.h"
#include <fstream>
using std::ifstream;
#include <cstring>
#include <sstream>
#include <tchar.h>
using namespace std;
using namespace concurrency;
using std::vector;
4

1 回答 1

5

该消息意味着编译器无法判断您是否需要std::extentconcurrency::extent. 有三种方法可以解决此问题:

  • 删除#include引入的std::extent- 这不太可能是一个好的解决方案,因为您可能需要该标题中的某些内容
  • 每当你使用它时都用它的全名调用concurrency::extent它 - 尴尬,但会起作用
  • 删除using namespace std;并用单个语句替换它,就像using std::endl;您在#include语句中看到的那样。

我最喜欢最后一个,虽然它的工作量更大。发现您需要其中哪些的最佳方法是删除using namespace std;并编译。错误消息将让您知道您正在使用 std 中的哪些类型。

于 2013-06-18T15:47:16.670 回答