Fehlermeldung: parameter "xxx" is initialized

Dein Thema passt einfach in kein Forum? Dann probiers mal hier.
Antworten
qtNiko
Beiträge: 216
Registriert: 6. April 2007 21:26
Wohnort: München

Fehlermeldung: parameter "xxx" is initialized

Beitrag von qtNiko »

hi,

ich erhalte plötzlich diverse Fehlermeldungen beim Compilieren/Linken meines Programms, mit denen ich nichts anfangen kann (Suse Linux und Eclipse CDT).

Ich möchte das Verhalten von zwei functions vergleichen. Jede der functions ist in einem eigenen Modul, d.h. einer eigenen Datei, enthalten.
Beispiel:
func1.c

Code: Alles auswählen

#include "func1.h"
extern struct LINELINK_INIT_PARA linelink_init;   // Fehler1
...
static void histo_clear();   // Fehler2
...
static FLOAT link_radius_sqr = 0;   // Fehler3 und 4
...
static void histo_clear()
 {                                          // Fehler5
... code dazu
}

void test_func() 

Fehlermeldung1: storage class specified for parameter 'linelink_init'
Fehlermeldung2: storage class specified for parameter'histo_clear'
Fehlermeldung3: parameter 'link_radius_sqr' is initialized
Fehlermeldung4: storage class specified for parameter 'link_radius_sqr'
Fehlermeldung5: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token

Das Modul func2.c sieht genauso aus. Hier erhalte ich allerdings keine Fehlermeldungen.

Besonders verwunderlich ist, dass in Fehlermeldung 2 der Prototyp der function histo_clear() als Parameter interpretiert wird.
Die genannten Parameter und functions kommen nur in den beiden Modulen jeweils lokal vor.
Da ich vermutete, dass "static" aus den lokalen Parametern vielleicht globale macht, habe ich mal versuchsweise einen Namen umbenannt, aber die gleiche Fehlermeldung erhalten.

Was heißt "storage class specifiied for..." ?
Der Parameter wird nirgends doppelt initialisiert.

Es muss irgend etwas ganz prinzipielles sein, das ich nicht sehe - vielleicht Matsch auf den Augen (Strichpunkte fehlen keine) :cry:
Vielleicht hat jemand eine Idee - wäre toll, ich stehe auf dem Schlauch.
Gruß von qtNiko

Core i5 760, GT 240, Suse Linux11.3, Eclipse-CDT-Helios, QT4.4, QT-Integration
kater
Beiträge: 306
Registriert: 29. Dezember 2009 01:13
Wohnort: Darmstadt

Beitrag von kater »

Ich hätte gern wie immer mehr Code. Um zu sehen welche Dateien andere Dateien inkludieren und ob das mit dem extern so stimmt.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Mir schaut das alles verdammt nach C-Code aus... (verdammt, steht ja auch "func1.c" drüber... egal jetzt hab ich das schon geschrieben :D)
*) extern struct LINELINK_INIT_PARA linelink_init;
Das "struct" kannst du in C++ streichen. Des weiteren solltest du das extern-Objekt in der Header-Datei deklarieren, das musst du eh includen wenn du linelink_init verwenden willst
*) "static" bei globalen Funktionen geht in C++ viel schöner

Code: Alles auswählen

namespace {
    void histo_clear() {
         ....
    }
}
Nennt sich "anonymer Namensraum"

Weiterhin kommt es mir so vor als hättest du die Fehlermeldungen beschnitten. Da steht sicher noch mehr -> posten!

Wie kompilierst du denn das ganze?
qtNiko
Beiträge: 216
Registriert: 6. April 2007 21:26
Wohnort: München

Beitrag von qtNiko »

Ich muss euch Frühaufstehern gestehen, dass doch ein ';' gefehlt hat, aber ganz woanders :oops:

Jetzt sind die mir unverständlichen Fehlermeldungen weg. Und dazu muss schon auch gesagt werden, dass der Inhalt von Fehlermeldungen oft eher auf falsche Pfade führt, als hilfreich ist. Zumal die Fehlermeldung nicht dort auftrat, wo der ';' fehlte, sondern an vielen und ganz anderen Stellen.
Meine Erfahrung bisher ist, dass unverständliche Fehlermeldungen in der Regel nicht wörtlich zu nehmen sind und auf grundsätzliche Regelverstöße (fehlender ; oder ähnliches) hinweisen.

Übrigens: es handelt sich natürlich um C-Code, der in eine Qt-GUI eingebunden ist.

Und Danke für eure Mühen nochmals :D
Gruß von qtNiko

Core i5 760, GT 240, Suse Linux11.3, Eclipse-CDT-Helios, QT4.4, QT-Integration
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

qtNiko hat geschrieben:Meine Erfahrung bisher ist, dass unverständliche Fehlermeldungen in der Regel nicht wörtlich zu nehmen sind und auf grundsätzliche Regelverstöße (fehlender ; oder ähnliches) hinweisen.
template-Fehlermeldungen sind auch gerne unverständlich :D
Aber trotzdem bitte das nächste mal die ganze Fehlermeldung posten (am besten gleich copy&paste die komplette Meldung des Compilers reinstellen, also den relevanten Teil ^^). Wenn du eh schon unverständliche Fehlermeldungen noch zusätzlich beschneidest, kann man nicht mal sehen, dass es eine unverständliche Fehlermeldung war ;)
Antworten