staging.inyokaproject.org

Compiler Problem?

Status: Gelöst | Ubuntu-Version: Ubuntu 8.10 (Intrepid Ibex)
Antworten |

OSJF

Anmeldungsdatum:
22. Februar 2009

Beiträge: Zähle...

Hi,

Auf die Gefahr hin das ich in das falsche Forum poste.... Ich habe gerade auf einer Ubuntu 8.10 Server Installation, www.nagios.org installiert. Dabei habe ich mich an die http://nagios.sourceforge.net/docs/3_0/quickstart-ubuntu.html Anleitung gehalten.

Beim compilieren sind massenhaft merkwürdige Warnungen entgegen gekommen. Ich habe den Eindruck das es eher an Ubuntu bzw. den compiler liegt als an Nagios. Google konnte mir leider keinerlei Antwort geben.

So sehen die Warnungen aus

check_nt.c:141: warning: ignoring return value of âasprintfâ, declared with attribute warn_unused_result
check_nt.c:144: warning: ignoring return value of âasprintfâ, declared with attribute warn_unused_result
check_nt.c:147: warning: ignoring return value of âasprintfâ, declared with attribute warn_unused_result
check_nt.c:173: warning: ignoring return value of âasprintfâ, declared with attribute warn_unused_result
check_nt.c:184: warning: ignoring return value of âasprintfâ, declared with attribute warn_unused_result
check_nt.c:185: warning: ignoring return value of âasprintfâ, declared with attribute warn_unused_result
check_nt.c:186: warning: ignoring return value of âasprintfâ, declared with attribute warn_unused_result
check_nt.c:188: warning: ignoring return value of âasprintfâ, declared with attribute warn_unused_result
check_nt.c:202: warning: ignoring return value of âasprintfâ, declared with attribute warn_unused_result
check_nt.c:208: warning: ignoring return value of âasprintfâ, declared with attribute warn_unused_result

Das ist allerdings nur ein Bruchtteil... Nagios scheint trotz der Warnungen zu Funktionieren. Zumindest konnte ich das Webinterface aufrufen.

Auf einer Debian5 installation, kurz zuvor, habe ich solche Warnungen nicht gesehen. Hat jemand eine Ahnung was das zu bedeuten hat?

gruß

OSJF

unbekannt1984

Anmeldungsdatum:
29. Oktober 2007

Beiträge: 945

Da hat wer im makefile die Compiler-Option -Wall (Warn all) gesetzt, oder sogar "strikte Syntax-Prüfung".

Warnungen kann man getrost ignorieren. Solange wie keine Fehler auftauchen ist das schon ok...

Torsten

OSJF

(Themenstarter)

Anmeldungsdatum:
22. Februar 2009

Beiträge: Zähle...

Vielen Dank unbekannt1984, dann brauche ich mir ja keine Sorgen machen. Ja Nagios funktiert wunderbar.

gruß OSJF

kassandro

Anmeldungsdatum:
21. August 2006

Beiträge: Zähle...

Verwende auch -Wall und bekomme auch etliche "warn_unused_result" Meldungen. Prinzipiell ist warn_unused_result sinnvoll. Man sollte es jedoch durch einen cast oder irgendetwas abschalten können. Leider verhindert z.B. "(void) write(.." die warn_unused_result-Meldung nicht. Gibt's eine andere Möglichkeit?

unbekannt1984

Anmeldungsdatum:
29. Oktober 2007

Beiträge: 945

kassandro schrieb:

Verwende auch -Wall und bekomme auch etliche "warn_unused_result" Meldungen.

Wie gesagt: Nicht weiter tragisch...

Prinzipiell ist warn_unused_result sinnvoll. Man sollte es jedoch durch einen cast oder irgendetwas abschalten können.

Wenn ich die Warnung richtig interpretiere, übergibt eine Funktion einen Wert an eine Andere, die diesen nicht weiter beachtet.

Leider verhindert z.B. "(void) write(.." die warn_unused_result-Meldung nicht. Gibt's eine andere Möglichkeit?

Da es sich um C-Code handelt müsste man das entsprechende "Return xy;" entfernen, den Kopf der Funktion auf Rückgabewert "void" ändern und den (falls vorhanden, evtl. in einer Header-Datei) Prototypen auf Rückgabe "void" umschreiben.

Eventuelle Zuweisungen des Rückgabewertes an eine Variable müssten ebenfalls unterbunden werden.

Torsten

kassandro

Anmeldungsdatum:
21. August 2006

Beiträge: Zähle...

Die warn_unused_result Meldung gibt's doch wohl nur bei Funktionen, die entsprechend deklariert sind? Bei "normalen" Funktionen darf man auch weiterhin den Rückgabewert ingnorieren, ohne gleich angemahnt zu werden. Die Warnung gibt's nur bei entsprechend deklarierten Funktionen wie z.b. write, wo man den Rückgabewert normalerweise nicht ignorieren sollte. Beim Beispiel write sollte man den Rückgabewert checken, um einen I/O-Fehler abzufangen. Allerdings wenn man z.B. auf die Konsole schreibt, dann ist es nicht sinnvoll zu checken, ob da ein I/O-Fehler aufgetreten ist. In so einen Fall sollte man eine Möglichkeit haben, den Compiler mitzuteilen, daß man bewußt auf den Rückgabewert verzichtet.

Antworten |