2012-07-30 16 views
5
int

Gibt es eine Option oder Variablentyp Variablentyp zuint in C++ Code zu setzen wegzulassen, die mit g ++ Compiler unter Linux kompiliert werden.Jede Option in C++ zu setzen Variablentyp Standard

Kompilierung ging gut in Solaris (wie ich portiere von Solaris zu Linux).

Eine weitere Sache, Ich habe nicht die Kontrolle über die Datei wie es von einigen Parser (zur Verfügung gestellt von einigen Dritten in Form von binären)

erzeugt Da ich die C++ Datei (wie es nicht ändern können erzeugt wird, jedes Mal vor der Kompilierung), brauche ich einige Option (von g ++), so kann ich während der Kompilierung zu unterdrücken/beheben den Fehler beinhalten:

error: ISO C++ forbids declaration of `bufLen` with no type 

EDIT:

INFO: Optionen zur Zeit verwende ich -c -fPIC -Wno-deprecated -m32 -O2 -ffriend-injection -g

Ist jemand der Optionen macht mir Probleme (oder andere zu beeinflussen)?


Vielen Dank im Voraus

+1

Sind Sie sicher, dass es eine C++ (und nicht eine C) Datei ist? C89 erlaubt 'int' weggelassen zu werden. – avakar

+2

Können Sie es einfach als C-Code kompilieren? Mit anderen Worten verwende den C-Compiler und nicht den C++ - Compiler. – sashang

+0

@sashang: Es ist C++ - Datei nicht c-Datei. Ich habe gerade eine Zeile erwähnt, die mir Probleme mit der von 10 000 Zeilen Parser generierten C++ Datei gibt: – Makesh

Antwort

2

Dank AndersK, der mir eine Lösung gab (durch Kommentare [unter meine Frage])

ich versucht, mit -fms-extensions mit g ++ kompiliert, die

Referenz mein Problem gelöst: http://gcc.gnu.org/onlinedocs/gcc-3.4.4/gcc/C-Dialect-Options.html

PS: Aus Gründen der Sichtbarkeit habe ich die Antwort im Antwortabschnitt hinzugefügt. Kredite gehen zu Person, die tatsächlich beantwortet :)

+0

Verstehen Sie die Ironie der Verwendung von -fms-Erweiterungen, um Ihren Code kompilieren zu lassen? -fms-extensions wurde zu gcc hinzugefügt, um die Unterstützung für Microsoft spezifische Erweiterungen der Sprache zu aktivieren (http://gcc.gnu.org/ml/gcc-patches/1999-08n/msg00363.html). Ich bezweifle ernsthaft, dass der ursprüngliche Code, den Sie von Solaris auf Linux portieren, irgendetwas mit Microsoft zu tun hat. Meine Vermutung ist, dass das eigentliche Problem ist, dass der Code-Generator C-Code erzeugt, und Ihr Problem ist, dass Sie C-Code mit dem C++ - Compiler kompilieren. Ändern Sie einfach die Compiler-Optionen, um gcc anzuweisen, den C-Compiler zu verwenden, wie andere Leute bemerkt haben. – sashang

1
+0

Das wird nicht funktionieren, wenn die Datei tatsächlich C++ (im Gegensatz zu reinem C) Code enthält. –

+0

In diesem Fall ist es nicht iso comform C++ - Code wie von der Fehlermeldung – Paranaix

+0

@Paranaix angegeben: das ist, wie ich kompiliere:/usr/bin/g ++ xyz.cc -c-fPIC -Wno-deprecated-m32 -O2 -ffriend -injektion -g -I/some_inc_dirs -o xyz.o ... Wird es helfen ?? – Makesh