Opzioni diverse da C per progetti embedded? Odio il preprocessore [chiuso]

1

C è un linguaggio semplice e fantastico, perfetto per la programmazione da vicino all'hardware, ma il preprocessore fa schifo rispetto ai linguaggi moderni.

Esiste un'alternativa / add-on al preprocessore c che aggiunge funzionalità moderne alla pre-elaborazione C (ad esempio, importazione vs include)? In particolare, sto cercando spazi dei nomi (o qualcosa di simile), un linguaggio macro leggibile e un linguaggio macro più potente (con la riflessione).

Oppure ho bisogno di cercare alternative valide a C per la programmazione integrata (i miei progetti, non il lavoro a contratto in cui intraprendo o spaccio il progetto)

Sono a conoscenza di D, ma non ho davvero cercato di usarlo per embedded.

* Modifica Non posso credere che nessuno mi abbia indicato questo! eLua

    
posta michael 09.07.2011 - 19:49
fonte

5 risposte

13

Se non ti piace programmare in C - con o senza CPP - in pratica hai solo poche opzioni per la programmazione integrata:

  1. Scopri l'assemblatore per la piattaforma. Bassa produttività, non portatile.
  2. Trova un linguaggio adatto in grado di generare l'origine C che poi compilerai e distribuirai. Ciò sarà doloroso quando è necessario eseguire il debug di roba perché il debugger non si riferisce alla sorgente originale ma al C. generato.
  3. Brain-wash e decidi di come per imparare C.

Sulla base delle mie esperienze con tutti e tre gli approcci, ti consiglierei di fare il lavaggio del cervello. A lungo termine il dolore sarà il minimo.

modifica: eLua sembra bello, ma funziona correttamente sulla tua piattaforma? In sostanza, devi essere pronto per eseguire il debug di eLua.

    
risposta data 09.07.2011 - 21:07
fonte
5

Non sono sicuro di aver capito, il preprocessore è un sistema di tipo di macro di sostituzione molto semplice. Difficilmente devi usarlo se non lo vuoi (ad es. Const int o funzione inline invece di #define).

Come specificato, include un problema, non vedo ancora quale sia il problema: includi un file di intestazione e contiene tutte le definizioni dell'unità di compilazione .c. Non è ciò che fa #import, ma per linguaggi di livello superiore che vogliono oggetti importati da un binario e le definizioni tradotte dai metadati? #include è l'equivalente del codice sorgente di questo.

    
risposta data 09.07.2011 - 19:55
fonte
4

Sì, modelli C ++. C'è un motivo per cui non puoi usare C ++ al posto di C? Ho sviluppato lo sviluppo integrato per alcuni anni e dopo il 1998 è stato interamente eseguito in C ++.

    
risposta data 09.07.2011 - 23:57
fonte
0

Perché non scrivere il tuo preprocessore? Scrivilo in C, senza comandi del preprocessore, e spedisci il tuo preprocessore insieme al tuo codice sorgente.

Ovviamente, dovrai affrontare il fatto che il preprocessore C è un PRE-processore, non un ambiente run time. AFAIK il preprocessore genera il codice C. Se non puoi farlo nel codice C, non puoi farlo con nessun preprocessore.

    
risposta data 11.07.2011 - 04:08
fonte
0

O semplicemente usa una lingua diversa come Ada . E 'stato progettato per sistemi embedded real-time dopo tutto :)

    
risposta data 01.08.2011 - 10:42
fonte

Leggi altre domande sui tag