Форум программистов, компьютерный форум CyberForum.ru

Почему нельзя использовать в операторе case переменные, которые определены как #define - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Хочу изучить C++ http://www.cyberforum.ru/cpp-beginners/thread802753.html
Начал читать книгу С++ на начинающих можно сказать чайников. Не могу скомпилировать. Хотел бы найти знающего человека ля помощи и дальнейшего общения. Кто сможет помочь оставьте эмайл или номер аськи, скайп. Спасибо=)
C++ Компиляция заданного кода в exe через программу Хочу узнать поподробнее, как реализовать компиляцию некого заданного кода в exe для windows через самописную программу. Ведь как-то писали компиляторы для других ЯП-ов. Например, есть код (предположим, паскалеподобный): begin print'HELLO!' exit Мне нужно, чтобы через мою прогу он переводился (компилировался) в exe-файл, который запускался бы через windows и выполнял то, что написано в... http://www.cyberforum.ru/cpp-beginners/thread802719.html
C++ Дан массив состоящий из n натуральных чисел
Дан массив состоящий из n натуральных чисел.Образовать новый массив элементам которого будут элементы исходного оканчивающиеся на цифру k
Задан массив с количеством элементов n C++
Задан массив с количеством элементов n.Сформировать 2 массива:в 1 включить элементы исходного массива с чётными номерами,а во 2 с нечётными
C++ Массивы. Вычислить минимальный элемент массива, сумму элементов массива, преобразовать массив http://www.cyberforum.ru/cpp-beginners/thread802715.html
При написании программ использовать динамические массивы. Размерность массивов задаётся именованной константой. Задача 2. В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1) минимальный элемент массива; 2) сумму элементов массива, расположенных между первым и последним положительными элементами. Преобразовать массив таким образом, чтобы сначала располагались все...
C++ Массивы. Вычислить максимальный элемент массива, сумму элементов, сжать массив При написании программ использовать динамические массивы. Размерность массивов задаётся именованной константой. Задача 1.В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1) максимальный элемент массива; 2) сумму элементов массива, расположенных до последнего положительного элемента. Сжать массив, удалив из него все элементы, модуль которых находится в интервале .... подробнее

Показать сообщение отдельно
Tolias28
202 / 117 / 2
Регистрация: 18.08.2010
Сообщений: 1,006
07.03.2013, 15:13     Почему нельзя использовать в операторе case переменные, которые определены как #define
Я не понимаю, почему Visual Studio ругается на строку с case в коде. Вроде все правильно. Если там написать напрямую цифру, тогда все компилируется. А если же там написать строку, которая обозначает тоже самое число (так как выше определена под #define), тогда компилятор ругается на одно место аж три раза:
Error 1 error C2143: syntax error : missing ':' before ';' d:\test\testprojects\testdefineswitch\testdefineswitch\testdefineswitch.cpp 17 1 TestDefineSwitch
Error 2 error C2143: syntax error : missing ';' before ':' d:\test\testprojects\testdefineswitch\testdefineswitch\testdefineswitch.cpp 17 1 TestDefineSwitch
3 IntelliSense: expected a ':' d:\test\testprojects\testdefineswitch\testdefineswitch\testdefineswitch.cpp 17 7 TestDefineSwitch
Вот сам код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include "stdafx.h"
#include <iostream>
 
#define OLOLO 5;
 
int _tmain(int argc, _TCHAR* argv[])
{
    int val = OLOLO;
    switch(val)
    {
    case 0:
        std::cout << "0";
        break;
    case OLOLO: //здесь ругается
        std::cout << "5";
        break;
    }
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 07:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru