Marc Santhoff <M.Santhoff(at)t-online.de> wrote:
> Wenn in einem Programm vor der Variablendeklaration schon verschiedene
> Anweisungen stehen, meckert gcc unter FreeBSD:
Welche FreeBSD-Version? Davon hängt die gcc-Version ab.
Der gcc in 4.x zum Beispiel ist uralt und kann noch nicht
richtig C99. (OK, ob neuere gcc es »richtig« können,
darüber könnte man auch streiten.)
> main.c: In function `main':
> main.c:46: syntax error before `int'
> main.c:47: `param' undeclared (first use in this function)
>
> Der Quelltext an der Stelle:
>
> int main (int argc, char *argv[])
> {
> #ifdef ENABLE_NLS
Das »#« muß in der ersten Spalte stehen (m Anfang der
Zeile). Vielleicht schluckt der gcc es auch so, aber
portabel ist das nicht. Das »ifdef« dagegen darf weiter
rechts stehen, d.h. zwischen »#« und »ifdef« darf noch
Whitespace sein.
> bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
> bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
> textdomain (GETTEXT_PACKAGE);
> #endif
> gtk_set_locale();
> gtk_init (&argc, &argv);
> add_pixmap_directory (PACKAGE_DATA_DIR "/" PACKAGE "/pixmaps");
> int param = 1;
Das ist nur in C99 erlaubt. C89 erlaubt noch keine Varia-
blendeklaration »zwischendurch«. Außerdem ist das meistens
eh nicht besonders übersichtlich.
Drei Möglichkeiten: Entweder verschiebe die Deklaration an
den Anfang der Funktion, oder mache einen neuen Block auf,
oder verwende einen neueren gcc, der die entsprechende C99-
Syntax schluckt.
Gruß
Olli
-- Oliver Fromme, secnetix GmbH & Co. KG, Marktplatz 29, 85567 Grafing Dienstleistungen mit Schwerpunkt FreeBSD: http://www.secnetix.de/bsd Any opinions expressed in this message may be personal to the author and may not necessarily reflect the opinions of secnetix in any way. Passwords are like underwear. You don't share them, you don't hang them on your monitor or under your keyboard, you don't email them, or put them on a web site, and you must change them very often. To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org with "unsubscribe de-bsd-questions" in the body of the messageReceived on Wed 15 Feb 2006 - 09:36:32 CET