2012-06-15 2 views
1

Сегодня после установки Slackware 13.37 у меня возникла проблема: по умолчанию GCC 4.5.2 не может скомпилировать мой код. Сейчас я учусь C++ по книге Стивена Дэвиса «C++ для чайников» и собрать это:GCC не может скомпилировать: '* не называет тип'

#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

Не пропустите первое сообщение об ошибке ... вы ошибочно написали '#include ' (довольно плохо, на самом деле). Затем, [получите книгу, актуальную, по крайней мере, с первой версией стандарта C++] (http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list). –

+3

Я никогда не видел ''. Все, что вам нужно включить, это ''. Эта книга не выглядит так, как будто она имеет лучший стиль кодирования. – chris

+0

Проверьте это правильно ** # включить **, если не изменить. – tuxuday

ответ

5

Три ошибки:

  1. Правильный заголовок <iostream>. Эта программа не требует других заголовков.

  2. Вы должны либо положить using namespace std; в файл, либо явно указать std::cout и. Возьмите свой выбор, многие программисты на С ++ не согласны с тем, какой из двух вариантов лучше. (Вы также можете внести cin и cout в свое пространство имен, если хотите.)

  3. Программа не пишет терминатор линии в конце. Это приведет к тому, что на большинстве терминалов «плохо выглядят» на выходе, а командная строка появляется в той же строке, что и вывод. Например:

Вот поправки:

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

Примечание: Крайне необычно видеть main параметры взять с другими именами, чем argc и argv. Изменение имен просто мешает другим людям читать ваш код.

1

его зЬй :: COUT или вы должны добавить using namespace std;

и включить должно быть < iostream> не < ionstream.h>.

+1

И без '.h' и' '. Есть такие мелочи ... – dirkgently