Добавьте пользовательский инструмент для набора инструментов для удаления BOM UTF-8 перед компиляцией

StackOverflow https://stackoverflow.com/questions/3127174

Вопрос

Мой вопрос в контексте кода :: блоки и его настраиваемая версия MINGW и NOTEPAD ++.

Я хочу, чтобы я мог включить литералы Unicode в моем источнике, и я могу, пока я использую UTF-8, а не использовать спецификацию.

Это работает нормально, до точки, но он выходит (плохой каламбур) всякий раз, когда я открываю файл; Это (не удивительно) имеет этот побочный эффект неподвижного нерва, отображать Unicode в его форме ANSI. :(

Те очень полезные и все же очень раздражающие три байта должны быть там, а потом они должны идти! (при компиляционном времени).

Это звучит достаточно легко, просто предварительно назначите исходные файлы (ы) и отказаться от первых трех байтов (если они являются BOM UTF-8) ...

Я, конечно, не буду быть процессором (по ручному удалению) каждый раз, когда я компилируюсь, поэтому я даже прибегал к использованию BOM-менее #include файлов для этих литералов, но это проблематично с нескольких перспектив, а не наименее Что такое, что это боль в преслову, и я не могу «видеть» их! ..виду много жонглирования.

Есть ли какой-то способ, которым я могу постучать в набор инструментов с пользовательским препроцессором? ... Или, если я пропустил некоторое явное решение, я бы очень сильно признателюсь об этом.

Это было полезно?

Решение 2

Я ездил немного больше, и я разработал предварительное решение. Я не совсем доволен этим, потому что он включает в себя изменение источника, тогда как я действительно искал водопроводное решение, но кажется, что G ++. EXE принимает только командную строку ARGS (пожалуйста, поправьте меня, если я ошибаюсь).

Мое «решение» немного грубого и готово, но он работает, и, безусловно, лучше (для меня), чем любое другое жизнеспособное решение, которое я столкнулся с (который нет!) Это требует должного внимания вашему редактору «Файл был изменен извне« коробка сообщений (если файл редактируется), но на самом деле BOM по-прежнему в редакторе, поэтому он несколько из совокупности.

Это простая командная строка взлома. Я бы предпочел более интегрированный вариант, но вот этот (и работает):

В CodeBlocks перейдите на: Настройки -> Компилятор и отладчик -> Другие настройки -> [Дополнительные параметры] -> Макрос-строка командной строки:

Сделайте эти моды в командную строку. Все они должны быть на одной строке (конечно), но для ясности я отменил их:

cmd /c DropTheBOM.exe $file
& $compiler $options $includes -c $file -o $object // (use your compiler cmdline)
& MakeTheBOM.exe $file
// Write your own utils, or try here: http://code.google.com/p/utf-bom-utils/

PS: #Include файлы не успокаивают их спецификации (если у них есть) .. Простое bom y / n arg переключатель для рутины, который #Includes эти файлы решит эту проблему довольно просто ... (но это только Проблема Windows ... Может быть, вот почему он не был обслужен ... или есть ли? Кто-нибудь знает?

Другие советы

Возможно, вы захотите рассмотреть все ваши строковые литералы в отдельный файл в любом случае и использовать loadLit() функция (или аналогичная), чтобы получить их во время выполнения.

Это позволит вам иметь один файл (с BOM), содержащим все Ваши строковые литералы и сделают вашу жизнь намного проще, если вам когда-нибудь придется интернационализировать вашу заявку.

Мы делаем это с нашими вещами, но имейте в виду программы нашего класса 1 должны быть I18N'е на 21 разные локали, поэтому мы сэкономите много работы, делая это так :-) Ваш пробег может варьироваться.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top