Casting volatile and const variables

Discussion in 'C Programming' started by Ravi, Sep 24, 2011.

  1. Ravi

    Ravi Guest

    Hello friends~

    I read on the internet,
    that const and volatile
    variable should not be
    type casted. Can you
    please tell me why
    shouldn't we type cast
    const and volatile
    variables?

    Regards
    Ravi, Sep 24, 2011
    #1
    1. Advertising

  2. On 9/24/11 4:50 PM, Ravi wrote:
    > Hello friends~
    >
    > I read on the internet,
    > that const and volatile
    > variable should not be
    > type casted. Can you
    > please tell me why
    > shouldn't we type cast
    > const and volatile
    > variables?
    >
    > Regards


    The danger with casting const/volatile variables is that writing to a
    object that is const is undefined behavior, as is accessing a volatile
    object except as a volatile object.

    If you have a variable of type "pointer to const x", it is ok to cast
    that to "pointer to x" and write through it, if the pointer actually
    points to a object that isn't const (you are allowed to safely place the
    address of a non const object into a pointer to const variable).
    Richard Damon, Sep 24, 2011
    #2
    1. Advertising

  3. Richard Damon <> writes:

    > On 9/24/11 4:50 PM, Ravi wrote:
    >> Hello friends~
    >>
    >> I read on the internet,
    >> that const and volatile
    >> variable should not be
    >> type casted. Can you
    >> please tell me why
    >> shouldn't we type cast
    >> const and volatile
    >> variables?


    An example might help. Can you show some code that you think is covered
    by this rule? I ask, because as you have it worded, I don't see any
    problem at all.

    > The danger with casting const/volatile variables is that writing to a
    > object that is const is undefined behavior, as is accessing a volatile
    > object except as a volatile object.


    Agreed if the first 8 words are deleted! The trouble is that a cast on
    a cont variable does no let you modify it, nor done one on a volatile
    variable lets you access it as anything than the volatile type it is. I
    think you've corrected the OP's question to answer the they probably
    should have asked.

    > If you have a variable of type "pointer to const x", it is ok to cast
    > that to "pointer to x" and write through it, if the pointer actually
    > points to a object that isn't const (you are allowed to safely place
    > the address of a non const object into a pointer to const variable).


    Also agreed, but none of that has anything to do with the what OP asked!

    As I said, it may be very close to what the OP wanted to ask. Maybe they
    read something about "casting away const" from the target type of a
    pointer and turned that into "casting a const variable". But it's also
    possible that they read something quite wrong. I'd like to see an
    example first.

    --
    Ben.
    Ben Bacarisse, Sep 24, 2011
    #3
  4. Ravi

    Uno Guest

    On 9/24/2011 2:39 PM, Ben Bacarisse wrote:
    > Richard Damon<> writes:
    >
    >> On 9/24/11 4:50 PM, Ravi wrote:
    >>> Hello friends~
    >>>
    >>> I read on the internet,
    >>> that const and volatile
    >>> variable should not be
    >>> type casted. Can you
    >>> please tell me why
    >>> shouldn't we type cast
    >>> const and volatile
    >>> variables?

    >
    > An example might help. Can you show some code that you think is covered
    > by this rule? I ask, because as you have it worded, I don't see any
    > problem at all.
    >
    >> The danger with casting const/volatile variables is that writing to a
    >> object that is const is undefined behavior, as is accessing a volatile
    >> object except as a volatile object.

    >
    > Agreed if the first 8 words are deleted! The trouble is that a cast on
    > a cont variable does no let you modify it, nor done one on a volatile
    > variable lets you access it as anything than the volatile type it is. I
    > think you've corrected the OP's question to answer the they probably
    > should have asked.
    >
    >> If you have a variable of type "pointer to const x", it is ok to cast
    >> that to "pointer to x" and write through it, if the pointer actually
    >> points to a object that isn't const (you are allowed to safely place
    >> the address of a non const object into a pointer to const variable).

    >
    > Also agreed, but none of that has anything to do with the what OP asked!
    >
    > As I said, it may be very close to what the OP wanted to ask. Maybe they
    > read something about "casting away const" from the target type of a
    > pointer and turned that into "casting a const variable". But it's also
    > possible that they read something quite wrong. I'd like to see an
    > example first.
    >


    example?
    --
    uno
    Uno, Sep 25, 2011
    #4
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. ben
    Replies:
    5
    Views:
    577
    Ulrich Eckhardt
    Jan 11, 2005
  2. Replies:
    11
    Views:
    1,084
  3. Javier
    Replies:
    2
    Views:
    541
    James Kanze
    Sep 4, 2007
  4. Alex Vinokur
    Replies:
    9
    Views:
    768
    James Kanze
    Oct 13, 2008
  5. ramu

    Casting volatile and const variables

    ramu, Oct 26, 2009, in forum: C Programming
    Replies:
    1
    Views:
    1,333
    Ben Bacarisse
    Oct 26, 2009
Loading...

Share This Page