На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
> синтаксическая ошибка: отсутствие ";" перед "="
    Доброй ночи!
    Есть проблема. Исходник, который должен компилироваться, только не знаю чем. В коде конструкция:
    ExpandedWrap disabled
      using blabla_t = unsigned int;
    , ниже этим типом объявлено одно из полей в некоторой struct.
    Насколько я понял, это аналог паскальной конструкции type blabla = longword;
    Запихнул исходник в проект под Visual Studio. Компилятор матерится:
    Цитата
    error C2143: синтаксическая ошибка: отсутствие ";" перед "="
    error C2873: blabla_t: использование символа в "using"-объявлении не допускается
    error C2513: int: нет переменных, объявленных перед "="
    error C2062: тип "unsigned int" не требуется

    Что с этим кодом не так? Мне конечно ума хватит убрать переназвание типа и использовать везде unsigned int напрямую, но подобных ошибок далее по тексту еще десяток, и весь код переписывать нет никакого желания. Проект был создан как Visual C++ - общие - пустой проект.
      Эта конструкция для c++11 и далее. Для ранних же стандартов - компилятор ее не понимает.
        Виталь, в С и старых версиях C++ нужное тебе пишется так
        ExpandedWrap disabled
          typedef unsigned int blabla_t;
          Ох и понапридумывали же конструкций. Спасибо, буду знать.
          Можно еще для полноты картины - начиная с какой версии VS понимает c++11 и с какой c++18 ? Что-то у Майкрософта много воды налито, а сводной таблицы в понятном виде не нашел.
              Доброго времени суток!
              Вопрос чуть по другой теме, но смежной.

              ExpandedWrap disabled
                auto var123 = std::vector<int>{};

              с последующими вызовами var123.push_back
              Цитата
              синтаксическая ошибка: отсутствие ";" перед "{"


              и параметры функции типа uintptr_t ругаются в теле функции при их использовании - "%name_of_var%" нельзя передать неявно, поскольку не задан режим передачи по умолчанию - это всё какой стандарт языка?

              Какая минимум студия нужна для того чтобы это откомпилировать? Говорю минимум потому что под эту задачу буду подымать отдельную виртуальную машину с виндой, и чем меньше гигабайт мусора буду ставить - тем быстрее решу поставленную задачу.
                Виталь, приведи участок кода, сделай синтетический пример - иначе маловато информации.
                  Вот кусок кода. Ругается на vector<int>{} (ошибка синтаксическая ошибка: отсутствие ";" перед "{") и на if (var2 && var3) (нельзя передать неявно, поскольку не задан режим передачи по умолчанию)
                  ExpandedWrap disabled
                    uintptr_t func1(const char* var1, uintptr_t var2, uintptr_t var3, int var4)
                    {
                        static auto var5 = [](const char* var6);
                        {
                            auto var123 = std::vector<int>{};
                            auto var2 = const_cast<char*>(var6);
                            auto var3 = const_cast<char*>(var6) + strlen(var6);
                            for (auto current = var2; current < var3; ++current)
                            {
                                if (*current == '?')
                                {
                                    ++current;
                                    ...
                                    var123.push_back(-1);
                                }
                                else
                                    var123.push_back(strtoul(current, &current, 16));
                            }
                            return var123;
                        };
                        if (var2 && var3)
                        {
                            ...
                        }
                        ...
                    }

                  Хочу знать чем компилировать. 2010я Студия его не берет. Ставить тупо 2019 не хочу - нужен большой виртуальный диск и качать образ на 30+ Гб, да еще и окажется что на Windows 7 она не пойдет (последняя мода от Microsoft) и придется начинать с установки Windows 10 на виртуализацию, она сама по себе будет жестко тормозить. Образ каждой последующей версии Студии в несколько раз тяжелее предыдущей (винды - тоже).
                  Сообщение отредактировано: Виталь -
                    Цитата Виталь @
                    auto var123 = std::vector<int>{};

                    Это какое-то бесполезное использование auto. В данном случае оно ничего не сокращает. Пиши тупо std::vector<int> var123; и всё
                      Внезапно.
                      Цитата
                      fatal error C1001: Внутренняя ошибка в файле компилятора. (файл компилятора "msc1.cpp", строка 1420)

                      Причина -
                      ExpandedWrap disabled
                        const char* name
                        HMODULE handle = GetModuleHandleA(name);

                      В оригинале был GetModuleHandle, но он выдает error C2664: GetModuleHandleW: невозможно преобразовать параметр 1 из "const char *" в "LPCWSTR" (независимо от того, стоит ли в свойствах использование юникода)

                      Оказывается, компилятор может падать. За всю историю использования Borland Delphi - ни разу такого не видел :D
                      Сообщение отредактировано: Виталь -
                        Цитата Виталь @
                        Вот кусок кода
                        Пример кода неверный. Плохо соответствует реальному. Сделай, плз, ещё раз, но без ошибок. Если судить по тексту сообщения, то этот if() должен быть внутри лябмды, но там даже лямбда неправильно определена, её по сути нет. Компилер должен был бы стопнуться ещё на её заголовке.
                        Цитата Виталь @
                        В оригинале был GetModuleHandle, но он выдает error C2664: GetModuleHandleW: невозможно преобразовать параметр 1 из "const char *" в "LPCWSTR" (независимо от того, стоит ли в свойствах использование юникода)
                        Так не бывает. Значит ты либо неправильно сказал использовать ANSI, либо подключил не те заголовки, если они от какой-нибудь сторонней либы, либо эта либа просто расчитана исключительно на юникод

                        Добавлено
                        Цитата OpenGL @
                        Это какое-то бесполезное использование auto. В данном случае оно ничего не сокращает. Пиши тупо std::vector<int> var123; и всё
                        Вообще не понимаю апологетов нового стиля инициализаторов. Везде суют {}, что только с толку сбивает.

                        Добавлено
                        P.S. VS2019 всё ещё умеет работать на любых Win7 с SP1. Что касается требуемых объёмов, тот тут всё зависит от набора компонентов. У меня стоит 2017 на ~20Гб, в которые включены базовые средства для C# и VB, отладчик JIT, инструменты статического и динамического анализа, наборы заголовков и библиотек для создания приложений под XP и API в совокупности трёх версий (ещё 7 и 8.1), плагины для полноценной поддержки GPU, библиотеки MFC и ATL (так ни разу и не воспользовался), RTL четырёх вариантов (статические/динамические, релиз/дебаг, естественно включая и упомянутые MFC с ALTем + ешё раз то же самое за ANSI/UNICODE для них) под три целевые исполнительные платформы x32, x64 и ARM с исходниками + беззаголовочные варианты при поддержке модулей, средства разработки под Android и два его эмулятора и Python обоих разрядностей.
                        Сообщение отредактировано: Qraizer -
                          По поводу "странных" ошибок. Да, ты пытаешься относительно новые фишки языка использовать с древним компилятором, да еще и с необычным синтаксисом. При этом не самым удачным. Вон OpenGL написал как надо. Хотя твоя конструкция "съедается" компилятором, по крайней мере с++14, но она неоптимальна.

                          Цитата Виталь @
                          Ставить тупо 2019 не хочу - нужен большой виртуальный диск и качать образ на 30+ Гб, да еще и окажется что на Windows 7 она не пойдет (последняя мода от Microsoft) и придется начинать с установки Windows 10 на виртуализацию, она сама по себе будет жестко тормозить.


                          А вот тут тебе присоветую, т.к. сам развернул среду разработки под Win7-x64. Не нужна тебе студия 2019, тебе нужно оттуда только компиляторы, линкеры и сопровождающий утиль. Поэтому делай следующим образом и обязательно в этом порядке:
                          1. Чтобы не парится с длинными путями, создай сразу себе каталог "C:\Tools", туда и будешь ставить себе все
                          2. Качай MSBuildTools 2019 и устанавливай в п.1 (часть coomon все равно залезет в programm Files, пофик). На странице это: "Все файлы для скачивания"->"Инструменты для Visual Studio 2019"->"Build Tools для Visual Studio 2019". В установщике обязательно выключи поддержку русского, а оставь только английский, позже напишу почему. Эта шляпа займет порядка 4Gb.
                          3. Качай и устанавливай "Пакет SDK для Windows 7 или 10", скорее всего тебе понадобится
                          4. Если хочешь альтернативные компиляторы GCC/Clang на основе MinGW32 - качай и устанавливай MSYS2, а после его установки доустанови нужное из окружения msys2
                          5. Качай и устанавливай python, он часто используется в системах сборки
                          6. Качай и устанавливай cmake (можно как пакет из MSYS2, но смысла нет)
                          7. Последним этапом ставь QtCreator (выбирай Qt5 opensource инсталлер, и в нем тока QtCreator). При первом старте QtCreator должен полностью автоматически обнаружить все компиляторы, отладчики, системы сборки и автосконфигурироваться. А выключение русского в п.2 даст тебе нормальные сообщения без крокозябов.

                          К примеру, мои наборы:

                          user posted image

                          ЗЫ: По поводу образа образа виртуального диска, чтобы не гадать, и чтобы потом не было мучительно больно в процессе установки и настройки ... Делай диск динамического размещения с указанием стартового размера не менее 30G. После установки/настройки - дефрагментация и сжатие. И все акеюшки :)

                          ЗЗЫ: Забыл!!! перед установкой лучше всего снести все версии MS C++ Redistributable, потом нужно доставить обратно. У меня 2019 M$ Build Tools при установке вылетал с ошибкой, пока я на предварительно не снес установленные.
                            Qt-то ему зачем, JoeUser?
                              Цитата Qraizer @
                              Qt-то ему зачем, JoeUser?

                              Ну QtCraeator, как среда разработки - супер, и гораздо легче студии. При это на отличненько автоконфигурируется - самостоятельно находит компиляторы, отладчики, системы сборки ... Но просто сейчас отдельного инсталлятора QtCreator'а нет, он идет как часть всей поставки Qt5. Тут парится не следует - онлайн-инсталлятор весит мегабайты. В нем только убрать все (ну или чего-то оставить) и выбрать QtCreator ... ну и все.

                              Не, можно конечно поставить что-то типа Atom'а, Visual Code, NetBeans - но это жЫрные скотины, тогда уж лучше студию.
                                Цитата Виталь @
                                static auto var5 = [](const char* var6);
                                Уберите точку с запятой в конце строки и все у вас получится.
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0420 ]   [ 17 queries used ]   [ Generated: 24.04.24, 13:56 GMT ]