Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
1 / 1 / 0
Регистрация: 20.04.2019
Сообщений: 10
1

Баг в компиляции комментов

20.04.2019, 10:06. Показов 788. Ответов 18
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, сегодня столкнулся с очень странным багом - ошибка при компиляции любого кода с комментами. Использую vs2015, все работало стабильно, в настройках не ковырялся. Суть проблемы:
Данный код компилируется без проблем
C
1
2
3
4
#include <iostream>
int main() {
    return 0;
}
При компиляции данного кода возникает ошибка LNK1561
C
1
2
3
4
5
#include <iostream>
//
int main() {
    return 0;
}
При компиляции данного кода возникает ошибка C1075: в конце файла обнаружен левый непарный фигурная скобка "{"
C
1
2
3
4
5
#include <iostream>
int main() {
    //
    return 0;
}
При этом на комменты формата /* ... */ он реагирует нормально. Также если коммент // стоит в конце файла с кодом. Подскажите, что может быть не так. В другом проекте также все работало корректно, и в один миг вылезло огромное количество ошибок, после замены всех комментов на /**/ все заработало. Столкнулся с такой ошибкой (или багом) впервые, что делать, понятия не имею.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.04.2019, 10:06
Ответы с готовыми решениями:

Непонятная ошибка (возможно баг?) при компиляции
Есть некая функция обхода двух векторов одновременно,и в ней присутсвует такой вот цикл (просто...

Баг или так задумано? Фишка с кодировкой файлов компиляции
Visual C++ 2013 Express. От изменения кодировки созданных .cpp файлов будет зависеть то как...

Баг при компиляции Maven: compilation error cannot find symbol
Доброго всем времени суток! Создавал в Intellij IDEA вот такой проект: MainModule (Maven...

Баг в программе. Без цикла работает нормально. С циклом выдает баг
Здравствуйте. Пишу программу. И как не пытался ее переписать, как дохожу до момента включения в код...

18
Неэпический
17869 / 10634 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 1
20.04.2019, 11:48 2
А код копировали или печатали сами в чистый файл, созданный в студии?
0
Just Do It!
3840 / 2286 / 636
Регистрация: 23.09.2014
Сообщений: 7,064
Записей в блоге: 2
20.04.2019, 11:53 3
Цитата Сообщение от DDQ Посмотреть сообщение
что делать, понятия не имею.
снести vs и поставить заново
можно параллельно поставить, например vs2017 или vs2013
1
35 / 25 / 10
Регистрация: 08.02.2019
Сообщений: 158
20.04.2019, 12:16 4
Код у меня работает без ошибок(см.вложения), покажите больше информации, например снимок экрана, может что-то со структурой проекта не так, не могу сказать, мало данных от вас
Миниатюры
Баг в компиляции комментов  
0
1 / 1 / 0
Регистрация: 20.04.2019
Сообщений: 10
20.04.2019, 12:43  [ТС] 5
Файл создавался внутри VS, код копировался, перепечатывался, проверялся на наличие посторонних символов, проект чистый, стандартный, специально для проверки ошибки сделал.
Миниатюры
Баг в компиляции комментов   Баг в компиляции комментов   Баг в компиляции комментов  

Баг в компиляции комментов  
0
1 / 1 / 0
Регистрация: 20.04.2019
Сообщений: 10
20.04.2019, 12:51  [ТС] 6
Дополняю:
VS сама расставила именно такие символы перехода строки, при ручном копировании CR LF в нотпаде после коммента все работает, но если его стереть и написать заново, он ставится некорректно при этом после #include самой VS символ перехода строки ставится именно такой. Как исправить?
P.P.S. Код на форум копировался из файла cpp, не перепечатывался.
0
Эксперт С++
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
20.04.2019, 12:54 7
DDQ,
прикрепите, пожалуйста, исходник,
который у вас не компилируется.
0
1 / 1 / 0
Регистрация: 20.04.2019
Сообщений: 10
20.04.2019, 12:59  [ТС] 8
cpp исходник
Вложения
Тип файла: zip Source.zip (176 байт, 4 просмотров)
0
Just Do It!
3840 / 2286 / 636
Регистрация: 23.09.2014
Сообщений: 7,064
Записей в блоге: 2
20.04.2019, 13:00 9
Цитата Сообщение от DDQ Посмотреть сообщение
специально для проверки ошибки сделал.
из вариантов:
на скрине у вас отображается один исходник, а компилируете вы другой.
0
1 / 1 / 0
Регистрация: 20.04.2019
Сообщений: 10
20.04.2019, 13:04  [ТС] 10
Исходник один.
Миниатюры
Баг в компиляции комментов  
0
Эксперт С++
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
20.04.2019, 13:20 11
Цитата Сообщение от DDQ Посмотреть сообщение
cpp исходник
проблема не подтверждается.

что в, общем то, не удивительно.
поскольку студия умеет и виндузятный CRLF, и линуксовый CR

Цитата Сообщение от DDQ Посмотреть сообщение
VS сама расставила именно такие символы перехода строки
это странно.
с этого момента поподробнее.
опишите по шагам, что конкретно вы делали,
после чего у вас получился исходник,
в котором так странно расставлены переводы строки.
0
Just Do It!
3840 / 2286 / 636
Регистрация: 23.09.2014
Сообщений: 7,064
Записей в блоге: 2
20.04.2019, 13:22 12
Цитата Сообщение от DDQ Посмотреть сообщение
cpp исходник
ваш файл:
Баг в компиляции комментов

а вот правильный файл:
Баг в компиляции комментов


при открытии в vs2019 вот что выдаёт:
Баг в компиляции комментов


нужно соглашаться, чтобы:
Баг в компиляции комментов


вот скопируйте себе:
C++
1
2
3
4
5
6
7
#include <iostream>
//
int main() {
    /**/
    return 0;
}
//
должно работать.
1
1 / 1 / 0
Регистрация: 20.04.2019
Сообщений: 10
20.04.2019, 13:42  [ТС] 13
Линуксовый вроде как как раз LF, CR это маковский вариант конца строки, не знаю, откуда он появился. Попробовал заменить на чистый LF - все компилируется. Если по шагам, то все до банальности просто - создал проект, в нем создал файл, в нем напечатал код.

Добавлено через 11 минут
Цитата Сообщение от XLAT Посмотреть сообщение
при открытии в vs2019 вот что выдаёт:
Как вручную вызвать это окошко? Или где настроить формат окончания строк?
0
Just Do It!
3840 / 2286 / 636
Регистрация: 23.09.2014
Сообщений: 7,064
Записей в блоге: 2
20.04.2019, 13:44 14
Цитата Сообщение от DDQ Посмотреть сообщение
не знаю, откуда он появился
очевидно, что это в результате копипасты строки
C++
1
#include <iostream>
Цитата Сообщение от DDQ Посмотреть сообщение
Попробовал заменить на чистый LF - все компилируется
думаю без разницы что будет в концах строк, НО чтобы это было выдержано в одном стиле.
очевидно, что ide, не может переключать парсер компилятора на ходу.

Цитата Сообщение от DDQ Посмотреть сообщение
Как вручную вызвать это окошко?
при добавления файла исходника в проект выскакивает автоматом, если в файле лажа)

а так никогда я не юзал энтот корректировщик.
2
1 / 1 / 0
Регистрация: 20.04.2019
Сообщений: 10
20.04.2019, 14:00  [ТС] 15
Цитата Сообщение от XLAT Посмотреть сообщение
думаю без разницы что будет в концах строк, НО чтобы это было выдержано в одном стиле.
Именно символом конца строки (конкретно в случае окончания комментария вида //) является LF, по крайней мере в 15 студии, отображаются строки однако любым из трех способов, без разницы на выдержку в одном стиле, даже без нее все может правильно компилироваться при соблюдении вышеописанного условия.

Единственный вопрос - где в студии находятся настройки для типизации конца строк.
0
Эксперт С++
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
20.04.2019, 14:01 16
Цитата Сообщение от hoggy Посмотреть сообщение
проблема не подтверждается.
ошибку удалось воспроизвести.

Цитата Сообщение от DDQ Посмотреть сообщение
Если по шагам, то все до банальности просто - создал проект, в нем создал файл, в нем напечатал код.
вы вручную пропечатали #include <iostream> и потом нажали enter?
или скопипастили строку откуда то извне?

как вышло, что у вас разные переводы строк?

печатая текст в самой студии,
вы никак не сможете наследить в одной строке CR,
а в другой CRLF

вероятно, вы вставили эту строку копипастой откуда то извне?

Цитата Сообщение от XLAT Посмотреть сообщение
думаю без разницы что будет в концах строк, НО чтобы это было выдержано в одном стиле.
совершенно верно.

студия корректно обрабатывает различные переводы строк,
но только если они все в одном стиле.

запись в различных стилях провоцируют означенную выше ошибку:
Код
LINK : fatal error LNK1561: entry point must be defined
1
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
20.04.2019, 14:05 17
Цитата Сообщение от DDQ Посмотреть сообщение
Как вручную вызвать это окошко? Или где настроить формат окончания строк?
Файл, Дополнительные параметры сохранения.
0
1 / 1 / 0
Регистрация: 20.04.2019
Сообщений: 10
20.04.2019, 14:07  [ТС] 18
Всем спасибо, вопросов больше нет.
0
Just Do It!
3840 / 2286 / 636
Регистрация: 23.09.2014
Сообщений: 7,064
Записей в блоге: 2
20.04.2019, 14:09 19
Цитата Сообщение от DDQ Посмотреть сообщение
Как вручную вызвать это окошко?
вот тут для vs2015
Баг в компиляции комментов

у меня галочка была сброшена.

тогда при открытии файла:
Баг в компиляции комментов

собсно соглашаемся и вуаля.
2
20.04.2019, 14:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.04.2019, 14:09
Помогаю со студенческими работами здесь

std::regex : баг на сайте или баг компилятора?
http://en.cppreference.com/w/cpp/regex/regex_match этот код выкидывает throw... Добавлено через...

Скрыть див от вк комментов
Почему не скрывается блок с комментами через JS?$(&quot;#page_wrap&quot;).css({'display':'none'});

скрипт для комментов
как создать скрипт для автоматического добавления комментариев ВК через промежутки времени?

Отключить модерацию комментов
Добрый день! Простой вопрос, как отключить модерацию комментариев в вордпресс?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru