Re: C unter FreeBSD

From: Oliver Fromme <olli(at)lurza.secnetix.de>
Date: Wed, 15 Feb 2006 09:35:37 +0100 (CET)

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 message
Received on Wed 15 Feb 2006 - 09:36:32 CET

search this site