[cfe-dev] Why global variable declarations are treated differently than local ones?
steve naroff
snaroff at apple.com
Mon Dec 22 16:21:17 PST 2008
On Dec 22, 2008, at 6:59 PM, Paolo Bolzoni wrote:
> Example source code:
> ---<
> int a,b,c;
> void f() {
> int a,b,c;
> }
> --->
> in this simple code clang sees two top level declarations.
> The first is a variable declaration (clang::VarDecl) and you can
> read all
> declarations using getNextDeclarator() of the base class
> clang::ScopedDecl.
>
> Instead the second is a function declaration. Its definition is a
> compound
> statement, the first statement is a declaration statement
> (clang::DeclStmt),
> here to see all the variables actually declared you need to use the
> decl_iterators, where each returns a _single_ clang::VarDecl.
>
> Since single variable declarations can express chains of
> declarations I see
> strange this difference. Where is the reason?
> Wasn't easier connect the DeclStmt with a single Decl, just like
> global type
> or variable declarations?
DeclStmt's are implemented in terms of DeclGroup's. The motivation for
DeclGroup's was discussed back in August.
See http://lists.cs.uiuc.edu/pipermail/cfe-dev/2008-August/002589.html
for the thread.
Since DeclStmt's don't appear at file scope, there is an
inconsistency. I don't recall if this work was completed (which might
explain the inconsistency). I noticed a comment in VarDecl which says
"Move to DeclGroup when it is implemented". Ted/Daniel, is this still
a work in progress?
snaroff
>
>
> pb
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
More information about the cfe-dev
mailing list