PDA

Показать полную графическую версию : [решено] не понятные ошибки


котвася
31-12-2009, 00:55
вот код:
#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
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
без c:\mvs\include\ru.h все компилируется.
но тогда я остаюсь без кириллицы.

Lisiy_egik
31-12-2009, 15:12
судя по пути и предыдущему топу компилятор - MVS, а так же он русифицированный, значит:
#include "c:\mvs\include\ru.h" »
подключается немного не так, в обозревателе решений (там, где у тебя файлы исходного кода, заголовочные и файлы ресурсов) правой клавишей по заголовочным файлам, затем добавить, затем существующий элемент. Затем выбери хэдер твоего русификатора в папке, одноименной твоему проекту (в этой папке так же лежат все файлы твоего кода (main, etc..)). Естественно предварительно скопируй его туда. И подключай самым обычным способом
#include "ru.h"
И все должно заработать. Надеюсь понятно объяснил.

котвася
31-12-2009, 15:40
\\это файл 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
У меня вот это заработало:

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

#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
для cout у меня и так все работало, вот для printf() не получается кириллица

#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
это решение должно работать для любого вывода, и не важно какими средствами он обрабатывается, будь то С будь то С++.
Не за что. С наступающим! )




© OSzone.net 2001-2012