Wo mit dem C ++ - Standard einen Kennung mit Namensraum einer Struktur in einem primären Ausdruck ermöglicht?C++

Programme in C++. Entwicklerforum
Anonymous
 Wo mit dem C ++ - Standard einen Kennung mit Namensraum einer Struktur in einem primären Ausdruck ermöglicht?

Post by Anonymous »

wobei der C ++-Standard eine Kennung mit Namensraum einer Struktur (eine "nicht gewöhnliche" Kennung in c in C) in einem primären Ausdruck ermöglicht? < /p>
Betrachten

Code: Select all

struct s
{
int x;
int y[sizeof x];
};
Hier wird die Größe von auf das Strukturelement x angewendet, während die Struktur selbst deklariert wird. Dies ist in C ++ (und nicht in c) zulässig, da: < /p>

In C ++ Das X < /code> hat eine Klasse (und eine Struktur ist eine Klasse) Umfang. Wie ich verstehe, sucht Sizeof im Klassenbereich zuerst x . C: C23 (N3299.pdf, 6.5.2p2) hat die folgende Einschränkung (Hervorhebung hinzugefügt): < /p>

Die Identifikatorin in einem Identifikator -Primärxpression muss eine sichtbare Deklaration als eine gewöhnliche Identifikatorin, die ein Objekt einteilen. Die Einschränkung wird den obigen Code ungültig (als C-Code kompiliert), da x < /code> (zumindest) eine nicht gewöhnliche Kennung ist. einer Struktur in einem primären Ausdruck?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post