[LALR allows for more complex grammars but LL(1) can yield faster,
smaller and more understandable parsers with better error handling.]

[There is a LL(1) grammar for C (cgram-ll1)]

In most cases grammars are not only used for parsing but also to build
(at least conceptually) an abstract syntax tree as input for the
semantic analysis step. After performing the transformations required
to make a grammar LL(1), it is very hard to use it to represent
semantic properties of the language.

I didn't take a look at it, but I guess this is the case for
'cgram-ll1' too.