There are two camera attachments. The first is an optical telephoto lens that adds 3x capability by snapping it over the camera. Physics supports this, but I was surprised that the images were inverted. This is normal when using a magnifying lens like this, but I would have thought that Tecno could fix it in the software. There's also no ultrawide camera module, which surprised me.
outdated dependency warnings
。关于这个话题,PDF资料提供了深入分析
But this often meant that it was impossible to know if a file belonged to a project without trying to load and parse that project.
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.