реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Проблема с комментариями (С++).
kurtis
сообщение Jun 2 2009, 15:58
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 466
Регистрация: 21-06-05
Пользователь №: 6 205



Компилятор 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
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jun 2 2009, 16:09
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Может быть потому, что символ '\' в конце строки означает "Продолжение на следующей строке". Т.е. "маскируется" следующий за символом '\' символ перевода строки, и следующая строка воспринимается как продолжение комментария.
Go to the top of the page
 
+Quote Post
rezident
сообщение Jun 2 2009, 16:11
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Что-то я в упор не вижу отличий первого кода от второго. Отличия только в строке комментария что-ли? cranky.gif Если да, то знак \ в конце строки комментария "приклеивает" следующую строку к ней. Соответственно закрывающая скобка } попадает в строку комментария.
А вообще у вас ошибка в условии ( (a = 10) вмеcто (a == 10) ), которая скорее всего приводит к тому, что тело main просто выкидывается оптимизатором.
Вот. Нашел в стандарте ANSI C описание причины ошибки. Двойной обратный слеш как одиночный обратный слеш воспринимается даже в комментарии.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Jun 2 2009, 16:18
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Не фиг красивости рисовать разными значечками, приводящими к трудно вылавливаемым неочевидным искажениям исходного текста и все будет хорошо!
Go to the top of the page
 
+Quote Post
kurtis
сообщение Jun 2 2009, 17:37
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 466
Регистрация: 21-06-05
Пользователь №: 6 205



Спасибо за разяснения. Всегда думал что если коментарий, то там можно делать все что угодно.
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Jun 3 2009, 10:55
Сообщение #6


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



Цитата(kurtis @ Jun 2 2009, 21:37) *
Спасибо за разяснения. Всегда думал что если коментарий, то там можно делать все что угодно.

Только для комментариев в стиле С : /* */
и не забывать про вложенность комментариев.


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 4th July 2025 - 04:07
Рейтинг@Mail.ru


Страница сгенерированна за 0.01377 секунд с 7
ELECTRONIX ©2004-2016