有没有办法可以在C ++中包含我的文件?

时间:2016-09-18 19:01:27

标签: c++

抱歉超级noob问题。我是C ++和一般编程的新手,但我创建了这些程序来读取用户输入,然后读取它的命令和文件。我想要包含文件a.h但我遇到了麻烦。它告诉我我的功能主要是重新定义的,但当我把它拿出来时它会吐出更多的错误。我考虑的可能是if else声明?有什么建议让我去?

文件名tryout.cpp

#include <iostream>
#include <string.h>
#include "a.h"

using namespace std;

int main()
{
string cmd,command,file1,file2;
cout << "prompt<<";
cin >> cmd;
int len = cmd.length();

int temp = cmd.find('<');
command = cmd. substr(0,temp);
cout << "COMMAND: " << command << "\n";

cout << "File Redirection: " << cmd.at(temp) << "\n";

int temp1 = cmd.find('>');
file1 = cmd.substr(temp+1,temp1-temp-1);
cout << "FILE: " << file1 << "\n";

cout << "File Redirection: " << cmd.at(temp1) <<"\n";

file2 = cmd.substr(temp1+1, len-1);
cout << "File: " << file2 <<"\n";

return 0;
}

文件名“a.h”

#include <iostream>
#include <string.h>

using namespace std;

int main()
{

string cmd,command1,command2,command3;
cout << "prompt<<";
cin >> cmd;
int len = cmd.length();

int temp = cmd.find('|');
command1 = cmd.substr(0,temp);
cout << "COMMAND: " << command1 << "\n";

cout << "PIPE: " << cmd.at(temp) << "\n";

command2 = cmd.substr(temp+1,len-1);
cout << "COMMAND: " << command2 << "\n";

cout << "PIPE: " << cmd.at(temp) << "\n";

command3 = cmd.substr(temp+2,len-2);
cout << "COMMAND: " << command3 << "\n";



return 0;
}

3 个答案:

答案 0 :(得分:1)

&#34; .h&#34;后缀用于&#34;标题&#34;文件。如果你想到一封来自你的手机公司的套用信函,那么最重要的是告诉你公司名称,联系方式等等。

A&#34;头文件&#34;在C ++中,一个主要提供定义的文件,您可能需要在多个&#34; .cpp&#34;之间共享的内容。文件。 A&#34; .cpp&#34; file通常是一个&#34;编译单元&#34;,一个离散文件,编译器应该变成一个类似命名的&#34;目标文件&#34;。

因此,在您向我们展示的内容中,您的兴趣分歧是错误的。您实际上已实施主要在&#34; .h&#34;文件。

当编译器读取你的&#34; .cpp&#34;文件,它读入iostreamstring.h标题,然后它读入a.h,其中包含{em>实现 { {1}}。然后,它返回到处理main,在那里它看到 tryout.cpp的另一个实现。

解决方案:从main删除主页。

答案 1 :(得分:0)

您不能拥有多个main()函数。编译时,C ++编译器将获取头文件的内容并将它们添加到#include语句所在的位置。如果它找到多个main()函数,则它不知道在哪里设置可执行文件的起始点。您必须将头文件功能重命名为其他功能。另请注意,通常的做法是不在头文件中包含函数定义,而不是使用函数声明,并在其他.cpp或预编译的.lib文件中包含定义。

我发现this文章有助于了解标头的工作原理。

答案 2 :(得分:0)

你不能有两个主要功能。如果你想要包含你的文件,你应该把所有东西放在一个函数中或者更好地构建一个类。