为什么我在这段代码中遇到编译错误?

时间:2014-03-09 15:24:47

标签: c++

我必须为接受C ++文件的类编写此程序,从代码中删除所有注释并将代码读出到新文件或输出中。经过长时间的努力,我不断收到编译错误,我只是无法弄清楚我做错了什么。一些帮助将非常感激。

#include <iostream>
#include <fstream>
#include <string>
#include <cassert>
#include <cstdio>

using namespace std;

void remove_comments (ifstream& , ofstream&); //function declaration

int main(void)
{
  int i;
  string inputFileName;
  string outputFileName;
  string s;
  ifstream fileIn;
  ofstream fileOut;
  char ch;

  do
  {
    cout<<"Enter the input file name:";
    cin>>inputFileName;
  }
  while (fileIn.fail() );
  cout<<"Enter the output file name: ";
  cin>>outputFileName;

  fileIn.open(inputFileName.data());
  assert(fileIn.is_open() );
  remove_comments ( fileIn , fileOut);         

  fileIn.close();
  fileOut.close();

  return 0;
}


void remove_comments( ifstream& fileIn , ofstream& fileOut)
{
  string line;
  bool flag = false;

  while (! fileIn.eof() )
  {

    getline(fileIn, line);

    if (line.find("/*") < line.length() )
      flag = true;
    if (! flag)
    {
      for (int i=0; i < line.length(); i++)
      {

        if(i<line.length())
          if ((line.at(i) == '/') && (line.at(i + 1) == '/'))
          break;
          else
            fileOut << line[i];
      }
      fileOut<<endl;


  }
  if(flag)
  {
    if(line.find("*/") < line.length() )
      flag = false;
  }

}

我得到的错误是:

In function 'void remove_comments(std::ifstream&,std::ofstream&)':
53: error: 'fileIn' was not declared in this scope
67: error: expected primary-expression before 'else'
67: error: expected `;' before 'else'
70: error: 'fileOut' was not declared in this scope
At global scope:
81: error: expected declaration before '}' token

2 个答案:

答案 0 :(得分:2)

remove_comments( ifstream& , ofstream&) 

你没有写参数名,应该是

remove_comments( ifstream& fileIn, ofstream& fileOut)

你最后还错过了几个括号

答案 1 :(得分:0)

main()中声明的变量不可用于其他函数。与所有功能类似。这称为变量范围。

fileIn中的变量remove_comments在函数内部没有声明,这是编译器所抱怨的。也许,就像@Ahmed Magdy Guda所说,你忘了在你的函数声明和定义中输入参数。