-
Помогите исправить предупреждение на С++ (warning C4309: =: усечение константного значения)
Добрый день. Задавал этот вопрос уже 2 знакомым и ещё на одном форуме. Народ предлагает свои варианты, но мою ошибку исправить не могут. Пишу проблему: Почему-то С++ отказывается выводить на экран русские буквы: вместо них бессмысленный набор символов. Я решил написать заголовочный файл и поместить в него функцию, с помощью которой можно нормально выводить русский текст. Вызывать захотел её вот так: write_rus("Привет мир!"); Создал заголовочный файл write_rus.h и описал в нём эту функцию. Привожу код: // write_rus - функция для вывода на // экран русскими буквами void write_rus (char *string) { char x; while (*string != '\0') { switch (*string) { case 'А': { x=128; std::cout<<x; } break; case 'Б': { x=129; std::cout<<x; } break; /***************************************/ case 'ю': { x=238; std::cout<<x; } break; case 'я': { x=239; std::cout<<x; } break; default: std::cout << *string; break; // для символов и для английских букв } string++; // сдвигаем указатель на следующий символ } } Кусок кода, помеченный символом /***************************************/ я удалил чтобы не загромождать здесь. Суть здесь такая: я передаю в функцию строку символов. Затем с помощью указателя просматриваю её до конца (до символа '\0') и для каждого символа вывожу на экран переменную x. Чему должна быть равна эта переменная я просто тупо подобрал. Таким образом я перебрал весь русский алфавит от А до Я и ещё раз от а до я. Если в строке английская буква или символ, то просто её вывожу (строчка с default). Мне показалось, что вроде всё правильно. Я написал файл .cpp и подключил туда свой заголовочный файл с функцией. Решил проверить. Привожу код: #include <iostream> #include "write_rus.h" // чтобы ипользовать функцию write_rus() int main() { using std::cout; using std::endl; write_rus("AБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"); // русские буквы cout<<endl; write_rus("абвгдеёжзийклмнопрстуфхцчшщъыьэюя"); // русские буквы cout<<endl; write_rus("ABCDEFGHILKLMNOPQRSTUVWXYZ"); // английские буквы тоже выводит cout<<endl; write_rus("abcdefghijklmnopqrstuvwxyz"); // английские буквы тоже выводит cout<<endl; cout<<"ABCDEFGHILKLMNOPQRSTUVWXYZ"<<endl; // этот способ только для английских букв cout<<"abcdefghijklmnopqrstuvwxyz"<<endl<<endl; // этот способ только для английских букв char response; // эти 2 строчки для std::cin >> response; // задержки экрана return 0; } Нажал на компиляцию. Выдало одно предупреждение много раз: warning C4309: =: усечение константного значения Весь текст из окошка Вывод: 1>Построение начато 09.08.2012 22:00:46. 1>ClCompile: 1> write_rus.cpp 1>d:\my documents\write_rus\write_rus\write_rus.h(12): warning C4309: =: усечение константного значения 1>d:\my documents\write_rus\write_rus\write_rus.h(18): warning C4309: =: усечение константного значения . . (аналогично, пропустил) . 1>d:\my documents\write_rus\write_rus\write_rus.h(396): warning C4309: =: усечение константного значения 1>d:\my documents\write_rus\write_rus\write_rus.h(402): warning C4309: =: усечение константного значения 1> 1>Построение успешно завершено. 1> 1>Затраченное время: 00:00:00.85 ========== Построение: успешно: 1, с ошибками: 0, без изменений: 0, пропущено: 0 ========== То есть он в качестве предупреждения помечает те строчки, в которых я присваиваю переменной х значения ( и того 33*2= 66 предупреждений). Причём программа запускается и всё работает, так как это не ошибка, а только предупреждение. Сейчас прочитал в учебнике совет, что всё таки предупреждения надо исправлять. Но я не знаю где тут ошибка. Подскажите, кто разбирается.
-
Как вернуть прежние настройки в Visual Studio 2010?
Спасибо, понял.
-
Как вернуть прежние настройки в Visual Studio 2010?
Здравствуйте. Есть Visual Studio 2010. Когда установил было так: открываю проект, посредине текстовый редактор, внизу окошко где выводятся ошибки/предупреждения, слева окошко где список файлов проекта: заголовочные файлы, файлы исходного кода и прочее (обозреватель решений). Так вот Обозреватель решений исчез. Наверное, я что-то нажал нечайно. Я нашёл как его добавить: Вид -> Обозреватель решений. Но он почему-то теперь справа, а мне надо как было, т.е. слева. Не знаю, что теперь делать. Хочу удалить Студию и снова установить. Может есть более быстрый способ? Как вернуть настройки по умолчанию? Вот в Матлабе это элементарно делается. А в этой Студии не получается.
Zlo_
Пользователь
-
Зарегистрирован
-
Посещение