C++ 无法编译C++;与海湾合作委员会
我需要在我的linux系统上编译代码。这是一个简单的代码,我不知道出了什么问题: 我有这段代码,但无法编译:C++ 无法编译C++;与海湾合作委员会,c++,gcc,C++,Gcc,我需要在我的linux系统上编译代码。这是一个简单的代码,我不知道出了什么问题: 我有这段代码,但无法编译: #include <iostream> #include <string> using namespace std; int main() { string char1, char2, char3, char4, char5, char6; cout<<"Hello this is your standard True and Fal
#include <iostream>
#include <string>
using namespace std;
int main()
{
string char1, char2, char3, char4, char5, char6;
cout<<"Hello this is your standard True and False quiz"<<endl;
cout<<"Please enter 'T' or 'F'"<<endl;
cout<<"No#1 George Washington invented the toilet?"<<endl;
cin>>char1;
if ( char1 != "T" || "F")
{
cout<<"You entered an incorrect character please reenter True of False"<<endl;
cin>>char1;
}
if ( char1 != "T" || "F")
{
cout<<"You entered an incorrect character please reenter True of False"<<endl;
cin>>char1;
}
if ( char1 == "T" )
{
cout<<"You entered the incorrect answer. The answer is False"<<endl;
}
cout<<"No#2 The Squareroot of 3136 is 56?"<<endl;
cin>>char2;
if ( char2 != "T" || "F")
{
cout<<"You entered an incorrect character please reenter True of False"<<endl;
cin>>char2;
}
if ( char2 != "T" || "F")
{
cout<<"You entered an incorrect character please reenter True of False"<<endl;
cin>>char2;
}
if ( char2 == "F" )
{
cout<<"You entered the incorrect answer. The answer is True"<<endl;
}
cout<<"No#3
system("PAUSE");
return 0;
}
gcc file.c
我得到:
test.c:1: fatal error: iostream: No such file or directory
compilation terminated.
据我所知,我需要所有的图书馆,我做了什么错事?< /P> < p>你试图用C编译器编译C++。试试
g++file.c
此外,最好将文件命名为file.cpp
——命名为.c
不会停止编译,但会帮助等工具生成。此外,它还将帮助以后遇到您的源代码的其他人(包括您自己)
编辑:您的代码还存在一些与您的问题无关的其他问题,但您将在编译代码后立即遇到这些问题:
你的(char1!=“T”| |“F”)
应该是(char1!=“T”&&char1!=“F”)
(注意&
而不是|
)
当输入错误时,您正在读取另一个字符,但由于代码没有循环,程序将在对下一个字符执行任何操作之前退出李>
正如大卫·施瓦茨所指出的
对于C语言新手来说,这些都是相当常见的错误(欢迎!我建议从一些教程或介绍性书籍开始。这里是一个很好的例子)
<>如果你自己去解决不了的问题,请自由地打开另一个问题。 < P>这是C++代码,不是C,必须编译。(它也有很多逻辑错误,但我们可以稍后再考虑。) < p>您有C++代码:
#include <iostream>
#include <string>
using namespace std;
/* ... */
C++不是C,你不应该把它当作C
尝试将文件重命名为file.cpp
,并使用g++
而不是gcc
:
g++ file.cpp
@dreamlax:它只在程序结束时使用一次,很可能是为了让用户在IDE中单击“运行”按钮时可以看到结果。别装作这是有史以来最可怕的事情,因为事实并非如此。至于它所做的,我宁愿看到一个<代码>系统(“暂停”),而不是一个C++函数,它们的功能完全相同,因为它们中的任何一个都不会进入真正的(非学校的、非学习的)程序中,如果有人需要时间来写“按任意键”代码,这是他们没有用来解决一个真正问题的时候。我知道我在这方面做得相当不合理,但这只是因为我知道有人教C++作为一个职业,并鼓励使用<代码>系统(“暂停”)< /> >(在其他不太容易实现的/实现的东西中)。也不知道RAII等更重要的原则。当我看到system(“pause”)
时,我立刻想到了这个人,他不知何故仍然有一份工作,许多人都在向他学习糟糕的编码实践,这让我很生气<代码>系统(“暂停”)
只是这家伙的冰山一角。这与过多的全局变量混合,void main()
。。。。。。过度依赖于实现定义的行为,你就有了这个家伙。shudder@cHao:是的,你说得很对,他一定在教一些正确的东西。。。实现定义的行为肯定有它的位置,但我感觉他没有强调不同的系统可以用相同的代码表现出不同的行为这一事实。人们会完成这个家伙的课程,认为他们知道C++,但他们真正知道的是C++上的Windows(如果你明白我的漂移)。每次看到系统(“暂停”)
,我肯定需要休息一下,事后看来,为……而激动似乎是件愚蠢的事情:)文件重命名并非绝对必要,但更改后的名称将使您能够更有效地使用make
。一些编译器会根据扩展名选择如何解释文件(如果不告诉它使用的是什么语言)。这似乎是一个完全合理的优化:发现代码<> G+++文件> C/<代码>将代码>文件> C <代码>作为C++代码而不是C代码,这让我感到惊讶。我想这是有道理的,但并不明显。最好的建议是既使用g++
,又为语言使用正确的后缀(通常是.cpp
,但也可以使用其他后缀)。
g++ file.cpp