Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] не понятные ошибки (http://forum.oszone.net/showthread.php?t=161966)

котвася 31-12-2009 00:55 1307994

не понятные ошибки
 
вот код:
#pragma once
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0600
#endif
#include <stdio.h>
#include <conio.h>
#include "c:\mvs\include\ru.h"
int main(){
int low,up,step;
float far,cel;
low=0;
up=300;
step=20;
far=low;
while ( far < up )
{
cel = (5.0/9.0)*(far-32.0);
printf("%4.0f %6.1f\n", far, cel);
far += step;
}
_getch();
return 0;
}
он почему-то не компилируется.
отчет прикрепил.

pva 31-12-2009 07:27 1308050

c:\mvs\p\mywin32console\mywin32console\win32.cpp(9) : error C2871: std: пространство имен с таким именем не существует
c:\mvs\p\mywin32console\mywin32console\win32.cpp(12) : warning C4091: : пропускается слева от 'float', когда ни одна переменная не объявлена
c:\mvs\p\mywin32console\mywin32console\win32.cpp(12) : error C2143: синтаксическая ошибка: отсутствие ";" перед ","
c:\mvs\p\mywin32console\mywin32console\win32.cpp(12) : error C2143: синтаксическая ошибка: отсутствие ";" перед ","
c:\mvs\p\mywin32console\mywin32console\win32.cpp(16) : error C2143: синтаксическая ошибка: отсутствие ";" перед "="
c:\mvs\p\mywin32console\mywin32console\win32.cpp(17) : error C2059: синтаксическая ошибка: <
c:\mvs\p\mywin32console\mywin32console\win32.cpp(18) : error C2143: синтаксическая ошибка: отсутствие ";" перед "{"
c:\mvs\p\mywin32console\mywin32console\win32.cpp(19) : error C2065: cel: необъявленный идентификатор
c:\mvs\p\mywin32console\mywin32console\win32.cpp(20) : error C2059: синтаксическая ошибка: ,
c:\mvs\p\mywin32console\mywin32console\win32.cpp(21) : error C2143: синтаксическая ошибка: отсутствие ";" перед "+="

файл c:\mvs\p\mywin32console\mywin32console\win32.cpp было бы показать полезней. Попробуй без #include "c:\mvs\include\ru.h" собрать

котвася 31-12-2009 13:47 1308232

без c:\mvs\include\ru.h все компилируется.
но тогда я остаюсь без кириллицы.

Lisiy_egik 31-12-2009 15:12 1308281

судя по пути и предыдущему топу компилятор - MVS, а так же он русифицированный, значит:
Цитата:

Цитата котвася
#include "c:\mvs\include\ru.h" »

подключается немного не так, в обозревателе решений (там, где у тебя файлы исходного кода, заголовочные и файлы ресурсов) правой клавишей по заголовочным файлам, затем добавить, затем существующий элемент. Затем выбери хэдер твоего русификатора в папке, одноименной твоему проекту (в этой папке так же лежат все файлы твоего кода (main, etc..)). Естественно предварительно скопируй его туда. И подключай самым обычным способом
Код:

#include "ru.h"
И все должно заработать. Надеюсь понятно объяснил.

котвася 31-12-2009 15:40 1308293

\\это файл ru.h
#include <windows.h>
char* Rus(const char* text);

char bufRus[256];
char* Rus(const char* text)
{
CharToOem(text, bufRus);
return bufRus;
}
ошибки у меня из-за windows.h, а если не подключать то не определяет CharToOem
в ручную не знаешь как описать CharToOem?

Lisiy_egik 31-12-2009 15:52 1308301

У меня вот это заработало:

Создай заголовочный новый заголовочный файл и помести туда вот этот код:

Код:

#ifndef _RUS_H
    #define _RUS_H

    #include <locale.h>

    inline void rus( void )
    {   
        setlocale( LC_CTYPE, ".1251" );
        setlocale( LC_MONETARY, ".1251" );

        return;
    }

#endif


подключи его соответственно как #include "имя"

и в main где нибудь в начале объяви :
Код:

rus();
например вот так:

Код:

#include <iostream>
#include "rus.h"
using namespace std;

int main()
{
        rus();
        cout << "Это тест русскоязычного вывода\n";
        return 0;
}

объявить достаточно только в main если я не ошибаюсь

котвася 31-12-2009 15:55 1308303

для cout у меня и так все работало, вот для printf() не получается кириллица

Цитата:

Цитата Lisiy_egik
#ifndef _RUS_H
#define _RUS_H
#include <locale.h>
inline void rus( void )
{
setlocale( LC_CTYPE, ".1251" );
setlocale( LC_MONETARY, ".1251" );
return;
}
#endif »

работает для printf, спасибо

Lisiy_egik 31-12-2009 16:02 1308308

это решение должно работать для любого вывода, и не важно какими средствами он обрабатывается, будь то С будь то С++.
Не за что. С наступающим! )


Время: 06:24.

Время: 06:24.
© OSzone.net 2001-