Frage

Ich möchte, dies zu tun:

extract_prototypes file1.c file2.cpp file3.c

und haben auch immer Skript / Programm für alle in den gegebenen C / C ++ Dateien definierten Funktionen eine schöne Liste von Funktionsprototypen drucken. Es muss schön mehrzeiligen Erklärungen behandeln.

Gibt es ein Programm, das diese Arbeit erledigen kann? Je einfacher, desto besser.

EDIT:. Nach dem Versuch, zwei C-Programme, Bonuspunkte für etwas zu kompilieren, dass verwendet {Perl, Python, Ruby}

War es hilfreich?

Lösung

Das Tool cproto tut, was Sie wollen, und ermöglicht die Ausgabe auf Ihre Anforderungen abstimmen .

. Hinweis: Dieses Tool funktioniert auch nur für C-Dateien

Andere Tipps

Ich verwende ctags

# p = function declaration, f = function definition
ctags -x --c-kinds=fp /usr/include/hal/libhal.h

Funktioniert auch mit C ++

ctags -x --c++-kinds=pf --language-force=c++ /usr/include/c++/4.4.1/bits/deque.tcc

Beachten Sie, Sie können hinzufügen müssen Pfade enthalten, tun dies die -I /path/to/includes verwendet wird.

http://cfunctions.sourceforge.net

(Dies nur, dass C und eine begrenzte Teilmenge von C ++ Haftungsausschluss:.. Das ist mein Programm)

Früher habe ich Gebrauch doxygen Dokumentation für meinen C ++ Code zu generieren. Ich bin kein Experte, aber ich denke, Sie doxygen verwenden irgendeine Art von Index-Datei der Funktionsprototypen zu erzeugen.

Hier ist ein Faden jemand eine ähnliche Frage zu stellen

gccxml ist interessant, aber es hat eine XML-Struktur drucken. Sie müssen extrahieren Informationen über Klasse, Funktionen, Typen und auch die spezialisierten Vorlagen von Klasse und Funktionen. gccxml Verwendung Parser von GCC, so brauchen Sie nicht die schlechteste Arbeit zu tun Weichen C ++ Datei Parsen, und Sie sind 100% sicher, dass es ist, was wahrscheinlich die beste compilator zu verstehen.

Wenn Sie Ihre Kommentare in geeigneter Weise zu formatieren, können Sie versuchen, Doxygen . In der Tat ist es, wenn Sie nicht versucht haben, bevor würde ich empfehlen, ihm zu gehen geben sowieso - es Vererbungsgraphen produzieren sowie Vollmitglied Funktionslisten und Beschreibungen (aus Ihren Kommentar)

.

gcc-xml könnte helfen, obwohl, wie es ist, ist es nur, dass die Hälfte die Arbeit, die Sie wollen. Sie werden einige Verarbeitung der XML-Ausgabe benötigen

Sie können die Quelldatei durch dieses Programm ausführen:

/* cproto_parser.c */
#include <stdio.h>                           
int main (void)                              
{                                            
    int c;                                   
    int infundef = 0;                        
    int nb = 0,                              
        np = 0;                              
    while((c=getc(stdin))!=EOF){             
        if(c=='{'){                          
            if((np==0)&&(nb==0)){infundef=1;}
            nb++;                            
        }                                    
        if (infundef==0) {putc(c,stdout);}   
        if(c=='}'){                          
            if((np==0)&&(nb==1)){infundef=0;}
            nb--;                            
        }                                    
        if(c=='('){np++;}                    
        if(c==')'){np--;}                    
    }                                        
    return 0;                                
}                    

Ausführen durch den Präprozessor lose Kommentare zu bekommen. Wenn Sie aufgrund #ifdefs unerreichte Streben haben müssen Sie Satz definiert, sind Dateien, die es nicht so zu machen.

z. B. cc cproto_parser.c -o cproto_parser; cc -E your_source_file.c|./cproto_parser

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top