LINUX.ORG.RU

flex & C++


0

0

Пока сидел на gcc 2.96 - проблем не было. Как только переехал на 3,
сразу возникли проблемы с компиляцией файлов, сгенеренных flex-ом.
Компилятро вылетае с сообщением , что не может привести std::istream
к istream.

anonymous

using namespace std

anonymous
()

Хрена!
пробовал, нифига не помогает. Да и куда его пихать в
лексовский исходник? Я пробовал в самом начале - одна фигня.
На самом деле вылечилось путем правки скелетного файла flex.skl и
пересборкой флекса из исходников. Но это же не портабельно - везде
вместе с проектом таскать свой flex...
Да, что пришлось поправить:
flex.skl:
в 28 строке прибил объявление class istream;
вместо него добавил
#include <iostream>
using namespace std;

после этого компилятор по крайней мере не сыпался...

anonymous
()

Используй #option c++ а unsing namespace std; отлично влазит в %{ using namespace std; %}

добавь это в начало твоего .l файла.

anonymous
()

Угу. Использовал... Добавлял... - я же писал про это... Ладно, фигня - похоже, что та версия не была расчитана на этот компилятор. На другой машине, где я сразу поставил gcc-3.2 - все работало и так. (естественно, пришлось добавить using namespace std;) Но там и flex генерит корректный сс файл - без уродской строчки class istream; - из-за которой все и было.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.