Hallo!
Ich habe hier ein kleines Problem mit den Funktionen 'getdtablesize()"
und 'lockf()'.
Wenn ich mein Programm mit 'gcc -Wall -O2' übersetzte, ist alle in Ordnung.
Bei Verwendung von 'gcc -Wall -O2 -std=c99' bekomme ich folgende Meldungen:
test.c: In function `daemonize':
test.c:131: warning: implicit declaration of function `getdtablesize'
test.c:147: warning: implicit declaration of function `lockf'
test.c:147: error: `F_TLOCK' undeclared (first use in this function)
test.c:147: error: (Each undeclared identifier is reported only once
test.c:147: error: for each function it appears in.)
On Tue, 2004-03-16 at 13:51, Stefan Weßels wrote:
Hallo!
Ich habe hier ein kleines Problem mit den Funktionen 'getdtablesize()" und 'lockf()'. Wenn ich mein Programm mit 'gcc -Wall -O2' übersetzte, ist alle in Ordnung. Bei Verwendung von 'gcc -Wall -O2 -std=c99' bekomme ich folgende Meldungen:
test.c: In function `daemonize': test.c:131: warning: implicit declaration of function `getdtablesize' test.c:147: warning: implicit declaration of function `lockf' test.c:147: error: `F_TLOCK' undeclared (first use in this function) test.c:147: error: (Each undeclared identifier is reported only once test.c:147: error: for each function it appears in.)
ist eingebunden. Weiss hier vielleicht jemand Rat bzw. kennt die Ursache ? Fehlende defines.
Schau Dir die Funktionen in /usr/include/unistd.h und /usr/include/features.h mal genau an. Ralf
Ralf Corsepius schrieb:
On Tue, 2004-03-16 at 13:51, Stefan Weßels wrote:
Hallo!
Ich habe hier ein kleines Problem mit den Funktionen 'getdtablesize()" und 'lockf()'. Wenn ich mein Programm mit 'gcc -Wall -O2' übersetzte, ist alle in Ordnung. Bei Verwendung von 'gcc -Wall -O2 -std=c99' bekomme ich folgende Meldungen:
test.c: In function `daemonize': test.c:131: warning: implicit declaration of function `getdtablesize' test.c:147: warning: implicit declaration of function `lockf' test.c:147: error: `F_TLOCK' undeclared (first use in this function) test.c:147: error: (Each undeclared identifier is reported only once test.c:147: error: for each function it appears in.)
ist eingebunden. Weiss hier vielleicht jemand Rat bzw. kennt die Ursache ?
Fehlende defines.
Schau Dir die Funktionen in /usr/include/unistd.h und /usr/include/features.h mal genau an.
Ralf
Danke für den Tipp. Aber ich habe warscheinlich etwas noch nicht so
richtig verstanden.
Wenn ich mit 'gcc -Wall -O2 -std=c99 --pedantic -D_BSD_SOURCE'
übersetze, klappt alles.
Wenn ich aber '#define _BSD_SOURCE' im Quellcode benutze, bleiben die
Fehler.
Uberschreibt '-std=c99' die defines oder was mache ich falsch ?
-
mfg
Stefan Weßels
Braseweg 11
31535 Neustadt
mailto:
Hi, On Tue, 16 Mar 2004, Stefan Weßels wrote:
Danke für den Tipp. Aber ich habe warscheinlich etwas noch nicht so richtig verstanden.
Wenn ich mit 'gcc -Wall -O2 -std=c99 --pedantic -D_BSD_SOURCE' übersetze, klappt alles. Wenn ich aber '#define _BSD_SOURCE' im Quellcode benutze, bleiben die Fehler.
Glaube ich nicht. Du hast das #define hoechstens an eine falsche Stelle
gesetzt. Es must vor alle #includes von Standardheadern (die
Michael Matz schrieb:
Hi,
On Tue, 16 Mar 2004, Stefan Weßels wrote:
Danke für den Tipp. Aber ich habe warscheinlich etwas noch nicht so richtig verstanden.
Wenn ich mit 'gcc -Wall -O2 -std=c99 --pedantic -D_BSD_SOURCE' übersetze, klappt alles. Wenn ich aber '#define _BSD_SOURCE' im Quellcode benutze, bleiben die Fehler.
Glaube ich nicht. Du hast das #define hoechstens an eine falsche Stelle gesetzt. Es must vor alle #includes von Standardheadern (die
includen koennten) um Effekt zu haben (oder eben in die Kommandozeile). Ciao, Micha.
Das wirds wohl sein. Ich hatte die defines hinter den includes.
--
mfg
Stefan Weßels
Braseweg 11
31535 Neustadt
mailto:
On Tue, 16 Mar 2004, Stefan Weßels wrote:
Wenn ich mein Programm mit 'gcc -Wall -O2' übersetzte, ist alle in Ordnung. Bei Verwendung von 'gcc -Wall -O2 -std=c99' bekomme ich folgende Meldungen:
test.c: In function `daemonize': test.c:131: warning: implicit declaration of function `getdtablesize' test.c:147: warning: implicit declaration of function `lockf'
Das sind BSD und XOPEN Funktionen. -std=c99 fuehrt dazu das erstmal nur alles aus ISO C99 verfuegbar ist (i.e. nicht einmal voll POSIX, lockf() gehoert dazu). Wenn du mehr willst brauchst du -D_BSD_SOURCE oder -D_XOPEN_SOURCE, oder sogar -D_GNU_SOURCE. Ohne alle -std=xxx ist BSD, POSIX 95 verfuegbar. Ciao, Micha.
Michael Matz schrieb:
On Tue, 16 Mar 2004, Stefan Weßels wrote:
Wenn ich mein Programm mit 'gcc -Wall -O2' übersetzte, ist alle in Ordnung. Bei Verwendung von 'gcc -Wall -O2 -std=c99' bekomme ich folgende Meldungen:
test.c: In function `daemonize': test.c:131: warning: implicit declaration of function `getdtablesize' test.c:147: warning: implicit declaration of function `lockf'
Das sind BSD und XOPEN Funktionen. -std=c99 fuehrt dazu das erstmal nur alles aus ISO C99 verfuegbar ist (i.e. nicht einmal voll POSIX, lockf() gehoert dazu). Wenn du mehr willst brauchst du -D_BSD_SOURCE oder -D_XOPEN_SOURCE, oder sogar -D_GNU_SOURCE.
Ohne alle -std=xxx ist BSD, POSIX 95 verfuegbar.
Ciao, Micha.
Danke, das wars. Ich muss galub ich noch etwas tiefer in die Materie
einsteigen...
--
mfg
Stefan Weßels
Braseweg 11
31535 Neustadt
mailto:
participants (3)
-
Michael Matz
-
Ralf Corsepius
-
Stefan Weßels