|
From: Robert A Duff on 28 Nov 2007 14:56 Georg Bauhaus <rm.tsoh+bauhaus(a)maps.futureapps.de> writes: > In http://www.adacore.com/2007/11/19/ada-gem-18/ > Bob Duff explains how to use GNAT's pragma Warnings. Thanks for advertising my "gem". :-) It's not the most interesting gem, IMHO. > The effect is that GNAT users can control individual > warnings by placing suitably crafted pragmas in > source code, next to the lines that trigger the warning. > > Another effect is that some Ada programs are used with > two or more targets and are translated using two or more > different compilers. In this case, the non-GNAT compiler > might complain about a non-supported pragma Warnings. > Placing the pragmas in the source will then defeat > the pragma's purpose because the compiler will issue > a warning about an unknown Warnings pragma. (Hopefully, > the other compiler will not report an error message, > as is predictably the case with link library pragmas.) Compilers are supposed to accept programs with unrecognized pragmas, and generate runnable code. They are also supposed to warn about unrecognized pragmas, but there is normally a switch to turn that off. I've developed Ada code using multiple Ada compilers at the same time. You're right -- different Ada compilers give different warnings. Here's what I suggest: pick one of the compilers that gives the warnings you like, and take those ones seriously. For the other Ada compiler(s), turn off all warnings with a switch, or simply don't pay any attention to them (including the warnings about pragma Warnings, if any!). If you distribute source code, you should document your policy, so users understand whether or not a warning is an indication that something is wrong. > Is there an alternative to placing compiler specific > pragma Warnings in portable (pragma-wise) Ada programs? > > (E.g., using the pragma as a configuration pragma, > in a connected region of source code but not right in it? > Using a smart IDE's filtering capabilities?) In GNAT, you can use pragma Warnings as a configuration pragma, but not for specific warnings on specific lines. E.g. you can disable all warnings about uninitialized variables, but you can't disable a warning on a particular variable using a config pragma. - Bob
From: Georg Bauhaus on 28 Nov 2007 16:24 On Wed, 2007-11-28 at 14:56 -0500, Robert A Duff wrote: > I've developed Ada code using multiple Ada compilers at the same time. > You're right -- different Ada compilers give different warnings. > Here's what I suggest: pick one of the compilers that gives > the warnings you like, and take those ones seriously. > For the other Ada compiler(s), turn off all warnings > with a switch, or simply don't pay any attention to them > (including the warnings about pragma Warnings, if any!). > > If you distribute source code, you should document your policy, so users > understand whether or not a warning is an indication that something is > wrong. A new twist on pragmatic programming. :-) http://m-w.com/dictionary/pragmatism
From: Stephen Leake on 29 Nov 2007 17:37 Georg Bauhaus <rm.tsoh+bauhaus(a)maps.futureapps.de> writes: > Is there an alternative to placing compiler specific > pragma Warnings in portable (pragma-wise) Ada programs? With GNAT project files, it is easy to specify different command-line options for different source files. There are command line options to disable specific warnings. So you can disable warnings at the file level (not the line level). For non-GNAT compilers, it may be more difficult to specify different command-line options for different files. Gnu make can do it, but it is a pain. -- -- Stephe
|
Pages: 1 Prev: [Q] pragma Warnings Next: how to increase the size of stacks |