使用borland c ++ v5.5从C ++编程语言编译示例代码时编译错误

时间:2012-09-09 13:38:34

标签: c++

以下是代码:

#include <string>
#include <iostream>

#include <vector>
#include <algorithm>

using namespace std;

struct Pair{
  string name;
  double val;
};

vector<Pair> pairs;

double& value(const string& s)
{
  for(int i=0; i < pairs.size(); i++)
    if(s == pairs[i].name)
      return pairs[i].val;

  Pair p = {s, 0};
  pairs.push_back(p);

  return pairs[pairs.size() - 1].val;
}

int main()
{
  string buf;
  while(cin>>buf) value(buf)++;

  for(vector<Pair>::const_iterator p = pairs.begin(); p != pairs.end(); ++p)
    cout << p->name << ": " << p->val << '\n';
  return 0;
}

编译器总是抱怨Line(Pair p = {s,0};)错误:
Borland C ++ 5.5.1 for Win32版权所有(c)1993,2000 Borland
.... \ CPP \ TEST.CPP:
警告W8012 .... \ cpp \ TEST.CPP 18:在乐趣中比较有符号和无符号值
ction值(const string&amp;)
错误E2291 .... \ cpp \ TEST.CPP 22:}预期在函数值(const string&amp;)中 错误E2034 .... \ cpp \ TEST.CPP 22:无法将'const string'转换为'Pair' nction value(const string&amp;)
错误E2141 .... \ cpp \ TEST.CPP 22:声明函数值语法错误(co
nst string&amp;)
错误E2139 .... \ cpp \ TEST.CPP 22:声明丢失;在函数值中(const
 string&amp;)
警告W8070 .... \ cpp \ TEST.CPP 22:函数应返回函数
中的值 value(const string&amp;)
警告W8004 .... \ cpp \ TEST.CPP 22:'p'被赋予一个永不使用的值
在函数值(const string&amp;)中 错误E2190 .... \ cpp \ TEST.CPP 22:意外}
错误E2238 .... \ cpp \ TEST.CPP 23:'对'的多重声明
错误E2344 .... \ cpp \ TEST.CPP 14:'对'的早期声明
错误E2141 .... \ cpp \ TEST.CPP 23:声明语法错误
错误E2040 .... \ cpp \ TEST.CPP 25:声明未正确终止
错误E2190 .... \ cpp \ TEST.CPP 26:意外}
编译* * 10错误

1 个答案:

答案 0 :(得分:1)

代码只使用最新的编译器(GCC 4.6.3)编译警告。您的编译器不能完全兼容。

有关GCC 4.3.4的编译,请参阅here