Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Ошибка при компиляции


Автор: russians 9.9.2007, 07:09
Добрый день. Возникла проблема при пробном испытании новых платформ.
Вставил пробный простенький код из Стивена Прата, работающий с рекурсией, следующего содержания:
Код

#include <iostream>
#include "stdafx.h"
using namespace std;
const int Len = 66;
const int Divs = 6;
void subdivide(char ar[], int low, int high, int level);
int main()
{
    char ruler[Len];
    int i;
    for (i=1;i < Len - 2;i++)
    ruler[i] = ' ';
    ruler[Len - 1] = '\0';
    int max = Len - 2;
    int min = 0;
    ruler[min] = ruler[max] = '|';
    cout << ruler << "\n";
    for (i = 1; i <= Divs; i++)
    {
        subdivide(ruler, min, max, i);
        cout << ruler << "\n";
        for (int j = 1; j < Len - 2; j++)
        ruler[j] = ' ';
    }
    return 0;
}
void subdivide(char ar[], int low, int high, int level)
{
    if (level == 0)
    return;
    int mid = (high + low) / 2;
    ar[mid] = '|';
    subdivide(ar, low, mid, level - 1);
    subdivide(ar, mid, high, level - 1);
}

В ответ компилятор VS2005 выдаёт на выходе:
Код

Compiling...
first.cpp
c:\winapi\first\first\first.cpp(16) : error C2653: 'std' : is not a class or namespace name
c:\winapi\first\first\first.cpp(16) : error C2065: 'cout' : undeclared identifier
c:\winapi\first\first\first.cpp(20) : error C2653: 'std' : is not a class or namespace name

При попытке компиляции в wxDevC++ компилятор выдаёт Done, при Build выдаёт исходный файл не откомпилирован, а в журнале компиляции содержится следующее:

Код

g++.exe: Files\Dev-Cpp\include\common\wx\msw -IF:\Program: Invalid argument
g++.exe: Files\Dev-Cpp\include\common\wx\generic -IF:\Program: Invalid argument
g++.exe: Files\Dev-Cpp\include\common\wx\fl -IF:\Program: Invalid argument
g++.exe: Files\Dev-Cpp\include\common\wx\gizmos -IF:\Program: Invalid argument
g++.exe: Files\Dev-Cpp\include\common\wx\html -IF:\Program: Invalid argument
g++.exe: Files\Dev-Cpp\include\common\wx\mmedia -IF:\Program: Invalid argument
g++.exe: Files\Dev-Cpp\include\common\wx\net -IF:\Program: Invalid argument
g++.exe: Files\Dev-Cpp\include\common\wx\ogl -IF:\Program: Invalid argument
g++.exe: Files\Dev-Cpp\include\common\wx\plot -IF:\Program: Invalid argument

g++.exe: Files\Dev-Cpp\include\common\wx\protocol -IF:\Program: Invalid argument
g++.exe: Files\Dev-Cpp\include\common\wx\stc -IF:\Program: Invalid argument
g++.exe: Files\Dev-Cpp\include\common\wx\svg -IF:\Program: Invalid argument
g++.exe: Files\Dev-Cpp\include\common\wx\xml -IF:\Program: Invalid argument
g++.exe: Files\Dev-Cpp\include\common\wx\xrc -IF:\Program: Invalid argument
g++.exe: Files\Dev-Cpp\include\common\wx -IF:\Program: Invalid argument
g++.exe: Files\Dev-Cpp\include\common  -LF:\Program: Invalid argument
g++.exe: Files\Dev-Cpp\Lib : No such file or directory

Выполнение завершено


Прямо проклятье какое-то smile Помогите чем можите smile

Автор: Evergreen 9.9.2007, 07:35
russians, закомментируй 2-ю строку
Код

//#include "stdafx.h"

Автор: russians 9.9.2007, 08:03
Evergreen, не помогает, всё равно в VS выпадает:
Код

Compiling...
first.cpp
c:\winapi\first\first\first.cpp(16) : error C2653: 'std' : is not a class or namespace name
c:\winapi\first\first\first.cpp(16) : error C2065: 'cout' : undeclared identifier
c:\winapi\first\first\first.cpp(20) : error C2653: 'std' : is not a class or namespace name

А в DevC++ я эту строчку удалял, забыл заметить smile

Автор: bsa 9.9.2007, 08:24
russians, ты зря установил DevC++ в c:\program files\... Установи его в C:\DevCpp и проблем с ним не будет скорее всего.

Автор: Evergreen 9.9.2007, 08:44
russians, глянь здесь, вроде то. http://support.microsoft.com/kb/243444/
Правка: Хм, эта ссылка для VS6. Так что здесь, видимо, ни при чём.

Автор: Evjeny 9.9.2007, 09:01
russians, попробуй вот так:
Код

#include <iostream.h>
const int Len = 66;
const int Divs = 6;
void subdivide(char ar[], int low, int high, int level);
int main()
{
    char ruler[Len];
    int i;
    for (i=1;i < Len - 2;i++)
    ruler[i] = ' ';
    ruler[Len - 1] = '\0';
    int max = Len - 2;
    int min = 0;
    ruler[min] = ruler[max] = '|';
    cout << ruler << "\n";
    for (i = 1; i <= Divs; i++)
    {
        subdivide(ruler, min, max, i);
        cout << ruler << "\n";
        for (int j = 1; j < Len - 2; j++)
        ruler[j] = ' ';
    }
    return 0;
}
void subdivide(char ar[], int low, int high, int level)
{
    if (level == 0)
    return;
    int mid = (high + low) / 2;
    ar[mid] = '|';
    subdivide(ar, low, mid, level - 1);
    subdivide(ar, mid, high, level - 1);
}

Автор: russians 9.9.2007, 09:09
Бестолку :( Вставил <cstdlib> в namespace, всё равно выводит ?????????????
Evjeny, аналогично :(

Автор: MAKCim 9.9.2007, 09:17
russians,
в VS2005 создай empty C++ project
добавь один .cpp с твоей программой и попробуй собрать
при работе с cout/cin добавляй идентификатор namespace (std)
если вначале нет
Код

using namespace std;

или
Код

using std :: cout;
using std :: cin;

Автор: tdebugger 23.9.2007, 20:57
#include <iostream> надо в stdafx.h поместить...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)