From: Steve Graegert <graegerts@gmail.com>
To: C programming list <linux-c-programming@vger.kernel.org>
Subject: Re: type qualifiers on function return types?
Date: Thu, 8 Dec 2005 19:07:46 +0100 [thread overview]
Message-ID: <6a00c8d50512081007v1d59190fh428935aa74d0cf9c@mail.gmail.com> (raw)
In-Reply-To: <001401c5fc1e$d7963110$8e01a8c0@Nate>
On 12/8/05, Nate Jenkins <nate@uniwest.com> wrote:
> I am sure I am not the only one here wondering what "type qualifiers" are.
> Could someone expound on what they are and why one would use them?
My DEC C Compiler documentation gives a good intro to type qualifiers.
Here is what is says:
There are four type qualifiers:
* const
* volatile
* __unaligned (axp)
* __restrict (pointer type only) [now: restrict]
"Type qualifiers were introduced by the ANSI C standard to, in part,
give you greater control over the compiler's optimizations. The const
and volatile type qualifiers can be applied to any type. The
__restrict type qualifier can be applied only to pointer types.
Note that because the __restrict type qualifier is not part of the
1989 ANSI C standard, this keyword has double leading underscores. The
next version (9X) of the C standard is expected to adopt the keyword
restrict with the same semantics described in this section.
The use of const gives you a method of controlling write access to an
object, and eliminates potential side effects across function calls
involving that object. This is because a side effect is an alteration
of an object's storage and const prohibits such alteration.
Use volatile to qualify an object that can be changed by other
processes or hardware. The use of volatile disables optimizations with
respect to referencing the object. If an object is volatile qualified,
it may be changed between the time it is initialized and any
subsequent assignments. Therefore, it cannot be optimized."
I hope this info was useful enough.
\Steve
PS: Please do not top post. Thanks.
--
Steve Graegert <graegerts@gmail.com> | Blog <http://tikomi.org>
Software Consultant {C/C++ && Java && .NET}
Office: +49 9131 7123988
Mobile: +49 1520 9289212
> ----- Original Message -----
> From: "Steve Graegert" <graegerts@gmail.com>
> To: "C programming list" <linux-c-programming@vger.kernel.org>
> Sent: Thursday, December 08, 2005 8:58 AM
> Subject: Re: type qualifiers on function return types?
>
>
> > On 12/8/05, Robert P. J. Day <rpjday@mindspring.com> wrote:
> >>
> >> i was just handed a pile of source code that, upon first build,
> >> complains thusly:
> >>
> >> header.h:20: warning: type qualifiers ignored on function return type
> >> header.h:22: warning: type qualifiers ignored on function return type
> >>
> >> at those lines, we read:
> >>
> >> typedef struct blah {
> >> volatile void (**start_address)(void); <--
> >> volatile char* stack;
> >> volatile void (**manual_start_address)(void); <--
> >> ...
> >>
> >> which seems to explain the warnings since i never thought you could
> >> add type qualifiers to function return types. or is there something
> >> incredibly clever happening here that i've never seen before? just
> >> wondering why someone would have coded it that way in the first place.
> >
> > Since functions can only return rvalues and the type qualifiers apply
> > only to lvalues, it is meaningless and therefore ignored.
> >
> > \Steve
> >
> > --
> >
> > Steve Graegert <graegerts@gmail.com>
> > Software Consultant {C/C++ && Java && .NET}
> > Office: +49 9131 7123988
> > Mobile: +49 1520 9289212
> > -
> > To unsubscribe from this list: send the line "unsubscribe
> > linux-c-programming" in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at http://vger.kernel.org/majordomo-info.html
> >
>
> -
> To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
next prev parent reply other threads:[~2005-12-08 18:07 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-12-08 12:32 type qualifiers on function return types? Robert P. J. Day
2005-12-08 16:58 ` Steve Graegert
2005-12-08 17:43 ` Nate Jenkins
2005-12-08 18:00 ` Robert P. J. Day
2005-12-08 18:07 ` Steve Graegert [this message]
2005-12-08 18:16 ` Nate Jenkins
2005-12-09 19:25 ` Glynn Clements
2005-12-08 17:58 ` Robert P. J. Day
2005-12-09 19:03 ` Glynn Clements
2005-12-09 19:04 ` Robert P. J. Day
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=6a00c8d50512081007v1d59190fh428935aa74d0cf9c@mail.gmail.com \
--to=graegerts@gmail.com \
--cc=linux-c-programming@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).