struct mit demselben Namen aber unterschiedlichem Member in C ++

8

Wie im Buch Die C ++ Programmiersprache (Bjarne Stroustrup), in Abschnitt 15.2.3 (Die Eine Definitionsregel) Seite Nr. 425, schreibe ich Programm wie folgt:

file1.cpp

%Vor%

file2.cpp

%Vor%

Zum Kompilieren habe ich den folgenden Befehl versucht.

%Vor%

und

%Vor%

Beide Befehle erzeugen eine ausführbare Datei ohne Fehler oder Warnung. Aber laut Buch sollte dieses Beispiel einen Fehler geben.

    
Manthan Tilva 13.05.2016, 07:09
quelle

1 Antwort

12

Eine Definitionsregel sagt das :

  

wenn eine .cpp-Datei struct S { int x; }; und die andere .cpp-Datei definiert   Datei definiert struct S { int y; }; , das Verhalten des Programms, das   verbindet sie miteinander ist undefined .

Ihr Programm ruft also undefiniertes Verhalten (UB) auf. Daher ist der Compiler nicht erforderlich, um eine Diagnose dafür zu geben.

Wenn Sie den Grund dafür wissen wollen, lesen Sie dies .

Ich hoffe, es hilft. :)

    
Destructor 13.05.2016, 07:21
quelle