На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual C++ / MFC / WTL (далее Раздела)
1) На Раздел распространяются все Правила Форума.
2) Перед тем, как создать новый топик, убедитесь, что Вы читали Правила создания тем в Разделе.
3) Вопросы, не связанные с программированием (настройки MS Visual Studio, книги, библиотеки и т.д.),
обсуждаются в разделе C/C++: Прочее
4) Вопросы разработки .NET (Windows Form, C++/CLI и т.п.) приложений на Visual C++/C# обсуждаются в разделе .NET.
5) Нарушение Правил может повлечь наказание со стороны модераторов.

Полезные ссылки:
user posted image FAQ Раздела user posted image Обновления для FAQ Раздела user posted image Поиск по Разделу user posted image MSDN Library Online
Модераторы: ElcnU
  
> кодировка исходного и препроцессированного кода
    Здравствуйте!

    Подскажите пожалуйста, как получить препроцессированный код в читабельной кодировке?

    1. исходный файл main.cpp записан в кодировке UTF-8 без bom и содержит комментарии на русском языке.

    2. в исходном файле прописывал дерективу:
    #pragma setlocale(".65001")
    Препроцессор игнорирует эту инструкцию.
    Компилятор ругается... Перебирал по всякому, но в итоге
    src\main.cpp(4) : error C2175: .utf8: недопустимый язык

    3. запустил препроцессор командой
    cl.exe /C /P main.cpp

    4. получил препроцессированный файл:
    main.i

    5. В полученном main.i кракозябры!
    Ну очень сильно похоже, на то как кракозябры выводятся в кодировке UTF-8

    В оригинале сохранённом в UTF-8:
    /* обработчик исключений. */

    В результате, открытом опять же в UTF-8:
    /* обработчик исключений. */

    Подбирать ключик, перебирая кодировки... Я потыркал разные варианты результата, но всё чего-то не то и не так.

    Даже попробовал менять кодировку командной строки:
    chcp 1251
    chcp 65001

    У кого-нибудь есть хорошие идеи?

    Просьба, не предлагать:

    1. писать комментарии на английском.

    2. сохранять в ином, не unicode формате.

    3. юзать другой препроцессор, не ms cl.exe

    windows 7 64 bit russian.
    visual studio 2013 russian
    Сообщение отредактировано: Eric-S -
      main.i чем открывал?
        Цитата Kray74 @
        main.i чем открывал?


        akelpad. У него есть автоопределение кодировки, но я и ручками указывал.
        Сообщение отредактировано: Eric-S -
          Цитата Eric-S @
          Просьба, не предлагать:

          1. писать комментарии на английском.
          2. сохранять в ином, не unicode формате.
          3. юзать другой препроцессор, не ms cl.exe


          Запускать препроцессор не командой, а командным файлом. В нем предварительная перекодировка в 1251, потом препроцессорная обработка. В итоге исходный файл в юникоде, выход препроцессора в читабельном 1251.
            Цитата JoeUser @
            Запускать препроцессор не командой, а командным файлом.

            Вы это так категорично утверждаете... Мне даже жаль вас обламывать. Запускаю естественно командным файлом.

            Цитата JoeUser @
            В нем предварительная перекодировка в 1251, потом препроцессорная обработка. В итоге исходный файл в юникоде, выход препроцессора в читабельном 1251.

            Ох... Если бы у меня был один файл! Это же надо скрипт писать, чтоб он обошел и переконвертировал все исходники. Причём, перед запуском препроцессора, старый код спрятал, заменив на новый. А потом удалил перекодированный, вернув на старый.

            И что ещё хуже, на выходе мне нужен тоже unicode. А всякие однобайтовые, вроде cp1251 наровят, чего-нибудь потерять.

            Цель в том, чтобы собрать исходный код, реальным препроцессором. А затем обработать его doxygen'ом. Сам doxygen не желает или не может корректно раскрыть все макросы и вдобавок подинклудить файлы.

            Но, погулявв, подумав, я сел эксперементировать. И достаточно быстро выяснилось, что проще всего, добавить bom. Всё! Больше никаких шаманств не требуется!
            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
            0 пользователей:


            Рейтинг@Mail.ru
            [ Script execution time: 0,0245 ]   [ 16 queries used ]   [ Generated: 27.04.24, 10:22 GMT ]