Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   C Programming (http://www.velocityreviews.com/forums/f42-c-programming.html)
-   -   Casting volatile and const variables (http://www.velocityreviews.com/forums/t754435-casting-volatile-and-const-variables.html)

Ravi 09-24-2011 08:50 PM

Casting volatile and const variables
 
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

Richard Damon 09-24-2011 09:19 PM

Re: Casting volatile and const variables
 
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).

Ben Bacarisse 09-24-2011 09:39 PM

Re: Casting volatile and const variables
 
Richard Damon <news.x.richarddamon@xoxy.net> 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.

Uno 09-25-2011 04:41 AM

Re: Casting volatile and const variables
 
On 9/24/2011 2:39 PM, Ben Bacarisse wrote:
> Richard Damon<news.x.richarddamon@xoxy.net> 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


All times are GMT. The time now is 03:50 AM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.