Yep, and, there's a definite difference between extensions that modify the standard behavior/syntax/... of existing language constructs, and extensions that add constructs or attributes that are simply not defined in the standard. While both are non-portable, the first category is far worse IMO.
The only extensions I ever use (for low-level stuff) are just attributes, which are not even breaking the standard, they are simply beyond its scope, and attributes will usually not make static analysis tools (at least decent and decently recent ones) go bonkers.