1

今天,在安装 Slackware 13.37 后,我遇到了问题:默认的 GCC 4.5.2 无法编译我的代码。现在我通过 Stephen Davis 的书“C++ for dummies”学习 C++,并想编译这个:

#include <stdio.h>
#include <iostream.h>

int main(int nNumberofArgs, char* pszArgs[])
{

int nNCelsius;
cout << "Celsisus: ";
cin >> nNCelsius;

int nNFactor;
nNFactor = 212 - 32;

int nFahrenheit;
nFahrenheit = nNFactor * nNCelsius / 100 + 32;

cout << "Fahrenheit: ";
cout << nFahrenheit;

return 0;
}

但是我的 GCC 4.5.2 给出了这些错误:

FahTCel.cpp:7:14: error: expected ')' before ';' token
FahTCel.cpp:7:14: error: 'main' declared as function returning a function
FahTCel.cpp:8:1: error: 'cout' does not name a type
FahTCel.cpp:9:1: error: 'cin' does not name a type
FahTCel.cpp:12:1: error: 'nNFactor' does not name a type
FahTCel.cpp:15:1: error: 'nFahrenheit' does not name a type
FahTCel.cpp:17:1: error: 'cout' does not name a type
FahTCel.cpp:18:1: error: 'cout' does not name a type
FahTCel.cpp:20:1: error: expected unqualified-id before 'return'
FahTCel.cpp:21:1: error: expected declaration before '}' token
4

2 回答 2

5

三个错误:

  1. 正确的标题是<iostream>. 该程序不需要其他标题。

  2. 您必须要么放入文件,要么明确using namespace std;引用。任你选择,很多 C++ 程序员不同意这两个选项中的哪一个更好。(如果您愿意,您也可以将 just和带入您的命名空间。)std::coutstd::cincincout

  3. 该程序不会在末尾写入行终止符。这将导致大多数终端上的输出“看起来很糟糕”,命令提示符与输出显示在同一行。例如:

以下是更正:

#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
    ...
    cout << nFahrenheit << '\n';
    ...
}

注意:看到带有和main以外的名称的参数是非常不寻常的。更改名称只会让其他人更难阅读您的代码。argcargv

于 2012-06-15T05:00:12.110 回答
1

它的 std::cout 或者你应该添加using namespace std;

< iostream>并且包含不应该是< ionstream.h>

于 2012-06-15T04:55:14.260 回答