Question 11.31

Qualcuno ha uno mezzo per convertire programmi C vecchio stile in ANSI C, o viceversa, o per generare automaticamente prototipi?


Due programmi, protoize e unprotoize, convertono avanti e indietro definizioni e dichiarazioni di funzioni tra con prototipi e ``vecchio stile''. (Questi programmi non trattano traslazioni complete tra il C ``Classico'' e l'ANSI C.) Questi programmi sono parte della distribuzione del compilatore GNU C di FSF ; vedere domanda 18.3.

Il programma di sprototipizzazione (/pub/unix/unproto5.shar.Z in ftp.win.tue.nl) e` un filtro che sta` tra il preprocessore e il successivo passaggio del compilatore, convertendo la maggior parte dell'ANSI C in C tradizionale al volo.

Il pacchetto GNU GhostScript viene con un piccolo programma chiamato ansi2knr.

Prima di convertire l'ANSI C nel vecchio stile, bisogna essere consapevoli che unatale conversione non puo` sempre essere fatta sia sicuramente ed automaticamente. L'ANSI C introduce nuove carrateristiche e complessita` non trovatae nel K&R C. E` specialmente necessario prestare attenzione alle chiamate di funzioni prototipate; probabilmente sara` necessario inserire conversioni esplicite. Vedere anche domandas 11.3 and 11.29.

Esistono diversi generatori di prototipi, molti come modificazioni a lint. Un programma chiamato CPROTO e` stato postato a comp.sources.misc nel Marzo del 1992. C'e` un altro programma chiamato ``cextract.'' Molti fornitori forniscono semplici strumenti come questi con i loro compilatori. Vedere anche domanda 18.16. (Ma prestare attenzione quando si generano prototipi per vecchie funzioni con parametri ``stretti''; vedere domanda 11.3.)

Infine, e` proprio certo che sia realmente necessario convertire molto vecchio codice in ANSI C? La sintassi delle funzioni vecchio stile e` ancora accettabile, e una affrettata conversione puo` facilmente introdurre errori. (Vedere domanda 11.3.)


Leggere di seguito: prev prossima su cima


Questa pagina e` di Steve Summit // Copyright 1995 // mail feedback