使用c ++创建文本编辑器而不使用任何图形库[该函数未声明错误]

时间:2011-09-18 15:47:11

标签: c++ function file-io ide editor

我正在用c ++ [non gui]创建一个texteditor,到目前为止我已经用这个代码结束了.. 我得到两个未申报的错误......为什么?

#include <iostream>
#include <fstream>

using namespace std;


int main()
{
    int op;
    cout<<"do you want to open example.txt or overwrite?\nIf you want to overwrite enter 1 , if you want to view it enter 2. :\n";
    cin>>op;
    if(op==1)
    {
        edit();
    }
    else if(op==2)
    {
        open();
    }
}

void edit()
{
    int op;
    string x;
    ofstream a_file("example.txt" , ios::app);
    cout<<"HEY ENTER SOME TEXT TO BE WRITTEN TO EXAMPLE.txt [created by rohan bojja]\n--------------------------------------------------------------------------------\n";
    getline ( cin , x);
    a_file<<x;
    cout<<"want to type in an other line?\n1 for YES, 2 for NO";
    cin>>op;
   while(op==1)
   {
       a_file<<"\n";
       edit;
   }
   cout<<"Do you want to quit?\n1 for YES , 2 for NO";
    cin>>op;
    if (op==2)
    {
    edit;
    }
}
void open()
{
    int op;
    ifstream a_file("example.txt");
    cout<<"You are now viewing example.txt [created by rohan bojja]\n--------------------------------------------------------------------------------\n";
    cout<<a_file;
    cout<<"Do you want to quit?\n1 for YES , 2 for NO";
    cin>>op;
   if(op==2)
    {
        open;
    }
}

但是,在编译时我收到错误[CodeBlocks Build Log]:

F:\Projects\c++\TextEditor\texteditor.cpp: In function 'int main()':
F:\Projects\c++\TextEditor\texteditor.cpp:14: error: 'edit' was not declared in this scope
F:\Projects\c++\TextEditor\texteditor.cpp:18: error: 'open' was not declared in this scope

3 个答案:

答案 0 :(得分:4)

您的主要功能无法看到编辑和打开功能,因为它们出现在main之后。您可以通过以下方式解决此问题:

1)将编辑和打开功能移到主要上方;或

2)添加编辑原型并在主页上方打开。在main之前添加这行代码,但在使用namespace std:

之后
void edit();
void open();

答案 1 :(得分:1)

C ++编译器是一次性编译器。这意味着它从上到下读取并翻译您的代码。如果您正在使用函数(或任何其他符号),编译器应在它到达之前知道它。

现在您有两个选项,可以将main放在editopen下,也可以写一个所谓的前向声明:

void edit();
void open();

这基本上就是没有身体的功能。请注意,当您有多个源文件时,这类内容就是放在.h文件(标题)中的内容。

答案 2 :(得分:0)

您需要在使用之前声明符号(函数,变量等)。要解决您的问题,请转发声明您的功能。

#include <...>
using namespace std;

void edit();
void open();

int main ()
{
    // ...
}

void open ()
{
    // ...
}

void edit ()
{
    // ...
}