foo * (*bar[2]); // This is parsed as a declaration (and not an expression because of the first rule)As for anonymous function pointer arguments and the cast operator: I never use the former, and I’m still experimenting with the latter. My current plan is to add a simple check for the identifier in (foo)(bar). If foo is a single identifier, I’ll parse it as a type cast—since I never write (MyFunc)(arg). If foo is a subexpression or contains multiple identifiers, it gets trickier, because I can imagine writing something like (cond ? func1 : func2)(arg). In that case, it might be manageable to check whether the expression inside the parentheses is a type (or arithmetic) expression.
Specifically Prohibited Abuse: TOR exit nodes. (TOR relays are allowed)
,更多细节参见电影
SelectWhat's included
query that returns a map of file’s declarations, and then a recursive