(quasi) Puro C invece del preprocessore C [chiuso]

2

Perché non viene usato C (quasi) puro al posto del preprocessore C?

Certo, capisco che sarebbe un po 'più prolisso. Ad esempio:

#define PI 3.14159

Se avessimo C regolare come linguaggio del preprocessore, quanto sopra potrebbe essere riscritto in qualcosa di simile:

#define PI {printf("3.14159");}

L'idea è di non sostituire {printf(...)} per PI ma di eseguire il codice dalla definizione macro e unire l'output di quel codice al posto di PI .

Sì, è più prolisso, ma per cose più complesse penso che sarebbe di grande aiuto. Inoltre, seguendo questo progetto, i programmatori non dovrebbero imparare un'altra lingua (in particolare il preprocessore C) per scrivere macro.

Quindi, ci sono altri motivi tranne la verbosità che il preprocessore C non è solo puro C (con forse piccole modifiche, come l'aggiunta della parola chiave define )?

    
posta nijoakim 05.01.2015 - 23:03
fonte

1 risposta

4

Ciò che suggerisci è possibile con le lingue più moderne. C è stato inventato in un momento in cui la tecnologia del compilatore era troppo primitiva per consentire questo tipo di pipeline di compilazione programmabile. Inoltre, la maggior parte dei programmatori non sapeva di utilizzare questo meccanismo.

Anche oggi è difficile costruire un compilatore che possa consentire tale programmazione. È facile specificare il comportamento in casi così semplici ma molto più difficile considerare cosa dovrebbe fare nel caso generale.

    
risposta data 05.01.2015 - 23:09
fonte

Leggi altre domande sui tag