Domanda

La mia domanda è nel contesto di Code :: Blocks e la sua versione ottimizzato di MinGW, e Notepad ++.

Voglio essere in grado di includere letterali Unicode nella mia fonte, e posso, finché io uso UTF-8 e non utilizzano una distinta base.

Questo funziona bene, fino a un certo punto, ma le distinte materiali out (brutto gioco di parole) ogni volta che riapre il file; esso (non sorprendentemente) ha questo effetto collaterale un-nerving di visualizzare Unicode nella sua forma ANSI. :(

Quelli molto utile ma molto fastidioso tre byte devono essere lì, e poi devono andare! (Al momento della compilazione).

Sembra abbastanza semplice, basta pre-elaborare i file sorgente (s), e scartare i primi tre byte (se sono un BOM UTF-8) ...

sto certamente non sarà il processore (con la rimozione manuale) ogni compilo tempo, quindi ho anche fatto ricorso all'utilizzo di bom-meno file # include per questi letterali, ma questo è un problema da diverse prospettive, non l'ultimo dei quali è che si tratta di un dolore nel proverbiale, e non riesco a "vedere" loro! ..without un sacco di giocoleria.

C'è qualche modo posso sfruttare la toolchain con un preprocessore personalizzato? ... o se ho perso un po 'di soluzione ovvia, mi piacerebbe molto apprezzato sentirne parlare.

È stato utile?

Soluzione 2

Ho fossicked intorno a un po 'di più, e ho elaborato una soluzione provvisoria. Io non sono del tutto soddisfatto perché si tratta di modificare la fonte, mentre in realtà stavo cercando una soluzione in filodiffusione, ma sembra che g ++. Exe accetta solo argomenti della riga di comando (per favore correggetemi se sbaglio).

La mia "soluzione" è un po 'rough-and-ready, ma funziona, ed è certamente migliore (per me) rispetto a qualsiasi altra soluzione praticabile che ho incontrato (che non è!) Si richiede la dovuta attenzione da pagare per il vostro editor di messaggio-box "file è stato modificato esternamente" (se il file è in fase di modifica), ma in realtà, la distinta è ancora nell'editor, quindi è un po 'un punto controverso.

Si tratta di un semplice trucco riga di comando. Preferirei una soluzione più integrata, ma qui è questo (e funziona):

In CodeBlocks, vai a: Impostazioni -> Compiler e Debugger -> Altre impostazioni ->    [Opzioni avanzate] -> Comando Linea macro:

fare questi mods a riga di comando. Dovrebbero essere tutti su un'unica linea (ovviamente), ma per chiarezza li ho separati out:

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 file non sono stripiped della loro distinta base (se ne hanno uno) ..      A / n interruttore arg semplice BOM y per la routine che #includes questi file risolverebbe questo problema molto semplicemente ... (ma è solo un problema di Windows ... forse ecco perché non è stato organizzato per ... o vero? qualcuno sa?

Altri suggerimenti

Si potrebbe prendere in considerazione esternalizzare tutte le stringhe in un file separato in ogni modo e utilizzando una funzione loadLit() (o simile) per farli in fase di esecuzione.

Questo vi permetterà di avere un unico file (con un BOM) contenente tutti i tuoi stringhe letterali e renderà la vostra vita molto più facile se mai per internazionalizzare la vostra applicazione.

Lo facciamo con la nostra roba, ma tenere a mente i nostri programmi di classe 1 devono essere i18n'ed per 21 diverse impostazioni internazionali così risparmiamo un sacco di lavoro da fare in questo modo :-) Il vostro situazione potrebbe essere diversa.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top