A perfectly valid idiom for using scanf-family functions is to include %n in your format string with the corresponding argument variables set in advance to -1 or similar (so that if the %n is not reached, the program can tell). This is particularly appropriate when the number of characters read, not the count of items read, is what's more interesting to the program.
As such, __wur (warn unused result) should be removed from all scanf-family functions.
A %n usage is relatively rare and warnings are more useful.
As gcc does a type checking of scanf arguments you could ask gcc developers to selectively enable/disable wur based on %n presence.