I'm using uV 4.70.0.0, compiler version is 5.03.0.24.
Is there a way to disable specific warnings? In other Keil toolchains I seem to remember there was a command-line control that allowed this. I can't seem to find a similar control in this ( ARM ) compiler, rather all I can find in the manual is the -W which disables all warnings. Am I missing something ?
Thanks
If I suppress a warning around a specific function, I know that warning doesn't produce any build noise. So any warning showing up is something new and unexpected to take a closer look at.
Nowadays, most compilers gives decent warning messages, allowing the source code to just be adjusted to mute the warnings.
Some compilers have had totally brain-dead warning messages that would require the source code to be nuked just to make the compiler happy. So in some situations it is more meaningful to partially disable a warning instead of breaking the code - especially since the code may be designed for use on a large number of different platforms making code changes requiring lots of rebuilds and retesting.
So there is a reason why lots of compilers have nice pragma options to push a warning state, before disabling a warning. Then popping the original warning state again.
A global kill of a warning is seldom good - unless the compiler developer had a big hole in is head. Microchip have managed some real broken compilers where they must have had a bad day when brain storming what to warn about. An example - when having a 16-bit variable that should be assigned to an 8-bit variable, it is traditional to have an 8-bit cast to tell the compiler not to warn about loss of information when assigning to the smaller variable. But this Microchip compiler instead complains that the 8-bit cast is bad for efficiency - despite not requiring any code to be generated...
So there are most definitely reasons to be able to enable/disable warnings, depending on compiler and actual code requirements. Just that disable of warnings is not at the top of the list of things to consider when seeing a warning.
For such a short disable/enable of warnings, the following construction really is very useful:
#pragma push #pragma diag_suppress 265 ... #pragma pop
or alternatively:
#pragma diag_suppress 265 ... #pragma diag_default 265
I managed to use the first version above until uVision 4.5, just unfortunately in uVision 4.6 and 4.7 this does not work any more. Would be nice, if it would be re-anabled in 4.8 (but of course it is not crucial - V4.7 has SOOO many nice and surprising improvements (concerning the in-situ-compiler and code completion), that I do not want to grump ...).
Warnings are Good- Warnings are Bad. They are just another tool in this toolset to be controlled by the user.
I frequently work with a partner long distance. We lay out a frame work of code and then split the tasks. I may have calls to his code set that is not yet included in my code until we sync via our SVC. So I create a 'DEBUG' target and a 'Production' target. In my debug target I will, among many options, disable selected warnings. The selected warning disable works fine for me but I am not running v4.7.
I disable the selected warnings when I know what they mean and the source of the warning. Sounds like a good tool for me. I don't worry the tools are giving overly strict or other warnings. I take them all with the same grain of salt.
When I select the 'Production' target all my warning options are returned to my default settings.
Just use the tools. They work.
Bradford
Thanks for your interesting description.
Just unfortunately the selective warning disable (using "#pragma diag_suppress...") stopped working since Version 4.6.