2009-08-18 68 views
0

对不起,这可能是一个愚蠢的问题,因为我根本找不到关于这个主题的任何东西。无论如何,我试图编译一些源代码,使用boost ::数组与Visual Studio 2005,作为Win32控制台应用程序(而不是clr),但由于某些原因,逃脱我Visual Studio仍然认为字数组关键字,所以它扼流圈上所有的boost ::阵列<>的代码有错误是这样的:boost :: array在VS 2005上没有编译

Error 1 error C2039: 'array' : is not a member of 'boost' 
d:\projects\libraries\boost_1_36_0-1\boost_1_36_0\boost\asio\buffer.hpp 809 

我敢肯定有一些非常愚蠢的,可能很明显我失踪没有人在世界上似乎有这个问题(根据谷歌的结果,我发现)

+1

'数组'只能被语法高亮器识别,所以我不认为编译器在/ clr项目之外有一个先入为主的数组概念。奇怪的是,asio的缓冲区应该无法找到数组类型,它包含boost/array.hpp。你在全局范围内有另一种数组类型吗? – 2009-08-18 07:26:34

+0

不是我能想到的,这是整个问题,如果我用/ Za编译(无语言扩展名),它可以识别boost :: array <> ok,但在其他部分失败。所以这真的很奇怪:/ – 2009-08-18 07:31:48

+0

如果你右键点击'数组'并选择“转到定义”或“转到声明”它是否会带你到某个地方,可能会提供线索? – 2009-08-18 08:10:38

回答

1

这个简单的程序编译和工作perfe在我的VC++ 2005中:

#include <iostream> 
#include <boost/array.hpp> 

int 
main() 
{ 
    const int size = 3; 
    boost::array<double,size> myArray; 
    myArray[0] = 23.43f; 
    myArray[1] = 24.00f; 
    myArray[2] = 23.50f; 
    double sum = 0.0; 
    for (size_t i = 0; i < myArray.size(); ++i) 
    { 
     sum += myArray[i]; 
    } 
    std::cout << "sum=" << sum << '\n'; 
    return 0; 
} 

你能发布一个失败的小代码片段吗?

+0

这实际上没有编译:/所以我再次下载Boost,现在它确实。不知何故,我的提振分布被打破。 – 2009-08-18 10:30:55

+0

也为我工作,奇怪它不适合你 – Maciek 2009-08-18 23:28:13