Seite 1 von 1

Quelltext mit indent formatieren, Problem mit namespace

Verfasst: Fr Mai 31, 2013 6:40 am
von mareb
Hallo,
ich verwende indent, um meine alten C und C++ Quelltexte für einen neuen Styleguide zu formatieren. Ich verwende folgende Parameter (die Beispiel Sourcedatei ist hier cputils.c):

Code: Alles auswählen

indent -nbad -bap -c33 -cd33 -cp33 -lc86 -bli0 -cdw -cli4 -cbi4 -npcs -cs -saf -sai -saw -nprs -di16 -bc -bls -i4 -ci4 -lp -ip0 -lps -l120 -nbbo -ts4 -nut -nfca -nlp cputils.c -o cputils.ci
Dabei stoße ich auf ein Problem. Der folgende Code:

Code: Alles auswählen

#ifdef __cplusplus
namespace std3000c {
extern "C" {

#endif
wird umgesetzt zu:

Code: Alles auswählen

#ifdef __cplusplus
namespace       std3000c
{
    extern          "C"
    {
#endif
und in der weiteren Datei sind dann alle Funktionen eingerückt. Ich möchte die Einrückungsregeln für "namespace" und "extern C" außer Kraft setzen. Die Parameter -nprs oder -prs haben hierbei keine Auswirkung.
Weiß jemand, wie ich das bewirken kann?

Vielen Dank

Re: Quelltext mit indent formatieren, Problem mit namespace

Verfasst: Fr Mai 31, 2013 8:38 am
von cloidnerux
http://www.gnu.org/software/indent/manual/indent.html
Kapitel 1.12 sagt, dass indent C++ nicht wirklich versteht, was hier der Fall sein kann.
Höchst wahrscheinlich versteht indent "namespace" nicht und denkt sich irgendwas merkwürdiges dabei.

Hast du es schon mal mit astyle probiert(Und auch immer schön Backups gemacht)?

Re: Quelltext mit indent formatieren, Problem mit namespace

Verfasst: Fr Mai 31, 2013 3:48 pm
von mareb
Hallo,
danke für die Antwort. In der Tat hatte ich auch astyle schon gefunden. Aber das kann einige andere Dinge nicht.
Vielleicht muß ich mir den Source von indent holen und etwas hacken...

Re: Quelltext mit indent formatieren, Problem mit namespace

Verfasst: Fr Mai 31, 2013 4:15 pm
von mareb
Hallo,
ach, ich habe eine Lösung gefunden, die besser als garnichts ist:

Code: Alles auswählen

/* *INDENT-OFF* */
#ifdef __cplusplus
namespace std3000c {
extern "C" {
#endif
/* *INDENT-ON* */

...

/* *INDENT-OFF* */
#ifdef __cplusplus
} /* extern "C" */
} /* namespace std3000c */
#endif
/* *INDENT-ON* */