Was versteht man unter einer Redeklaration?
-
Was versteht man unter einer Redeklaration?
ist damit das verdecken gemeint?:
int i; { int i; }
-
Redeklaration = Wieder-Deklaration
kommt das bei dir in form einer fehlermeldung?
-
eigentlich redeklarieren.
varieblen deklariert man mit extern.extern int i; extern int i;//erlaubt extern int i;//immernoch rlaubt extern int i;//er ist geduldig extern double i;//hier meckert er bestimmt und sagt das wort "redaklaration" dabei.
oder gehts eher um funktionen?
int f(int);//dekalriert. int f(double);//ne andere deklartiert int f(int);redekalriert, ok double f(int);redaklariert mit anderem return-typ, das darf man nicht.
-
Das passiert mit immer bei Typen:
class das; //irgendwo
struct das; //irgendwo anders plus redeklaration
-
eins fehlt noch:
globale deklaration einer variablen in z.b. zwei verschiedenen header-dateien, die dann aber beide inkludiert werden.
erste.h
int i;zweite.h
int i;haupt.cpp
#include "erste.h"
#include "zweite.h"
-
das wäre doppelte Definition
-
> kommt das bei dir in form einer fehlermeldung?
das kommt bei mir in Form des C/C++ Kompendiums - der Autor schreibt öfter "Redeklaration"
z. B.:
"Namensbereiche sind keine statischen Gebilde, sie lassen sich nämlich beliebig erweitern. Wurde ein Namensbereich eingeführt, ist jede weitere Definition dieses Namensbereiches eine Erweiterung - und nicht etwa eine Redeklaration."oder ein paar seiten weiter vorne:
"Interne Bindung:
Alle vorkommen eines Bezeichners mit interner Bindung beziehen sich für die aktuelle Übersetzungseiheit auf das gleiche ObjektDie interne Bindung erlaubt die Redeklaration innerhalb einer Quelltextdatei"
-
endline schrieb:
das wäre doppelte Definition
stimmt, compiler sagt: error: redefinition of `int i'
und bei:
erste.h
extern int h;zweite.h
extern double h;kommt vom compiler: error: conflicting declaration 'int i'
//edit ist ja eh egal, er der OP meinte ja was anderes
-
Aso!
- redeklaration heißt einfach neu deklarieren - hat mich etwas verwirt im Zusammenhang mit dem Bindungskonzept von C++