Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблема с комментариями (С++).
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
kurtis
Компилятор GCC для AVR. Хотя такой-же эффект наблюдается и в MinGW. Язык С++.
Столкнулся с такой вот проблемой, есть код
Код
int main()
{
    int a = 10;
    int b;

    if (a = 10) {
        b = 30;
    //\\ Почему тут нету ошибки?
    }
    else {
        b = 40;
    }
}
и есть такой вот код
Код
int main()
{
    int a = 10;
    int b;

    if (a = 10) {
        b = 30;
    // А вот тут есть ошибка? \\
    }
    else {
        b = 40;
    }
}

Вопрос, почему в первом случае отсутствует ошибка а во втором она "вдруг" появляется? И разве не все-равно что я буду писать после знака комментария ("//")?

Сам текст ошибки
Цитата
C:\temp\Trigraphs\main.cpp: In function `int main()':
C:\temp\Trigraphs\main.cpp:10: error: expected primary-expression before "else"
C:\temp\Trigraphs\main.cpp:10: error: expected `;' before "else"
C:\temp\Trigraphs\main.cpp:13: error: expected `}' at end of input
Палыч
Может быть потому, что символ '\' в конце строки означает "Продолжение на следующей строке". Т.е. "маскируется" следующий за символом '\' символ перевода строки, и следующая строка воспринимается как продолжение комментария.
rezident
Что-то я в упор не вижу отличий первого кода от второго. Отличия только в строке комментария что-ли? cranky.gif Если да, то знак \ в конце строки комментария "приклеивает" следующую строку к ней. Соответственно закрывающая скобка } попадает в строку комментария.
А вообще у вас ошибка в условии ( (a = 10) вмеcто (a == 10) ), которая скорее всего приводит к тому, что тело main просто выкидывается оптимизатором.
Вот. Нашел в стандарте ANSI C описание причины ошибки. Двойной обратный слеш как одиночный обратный слеш воспринимается даже в комментарии.
sergeeff
Не фиг красивости рисовать разными значечками, приводящими к трудно вылавливаемым неочевидным искажениям исходного текста и все будет хорошо!
kurtis
Спасибо за разяснения. Всегда думал что если коментарий, то там можно делать все что угодно.
mdmitry
Цитата(kurtis @ Jun 2 2009, 21:37) *
Спасибо за разяснения. Всегда думал что если коментарий, то там можно делать все что угодно.

Только для комментариев в стиле С : /* */
и не забывать про вложенность комментариев.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.