Sponsored Content
Top Forums Programming Why this const variable is not changing even after applying const_cast? Post 302518096 by Loic Domaigne on Thursday 28th of April 2011 02:49:39 PM
Old 04-28-2011
Unless I am mistaken, modifying any object that was actually defined as const leads to an undefined behavior (which 10 at the end might indeed result).

I checked on Gnu/Linux : it seems that g++ simply replace i by the value of 10 during compilation (even tough it computes 11), as we can verify on the produced assembler code:

Code:
main:
.LFB957:
   .cfi_startproc
   .cfi_personality 0x3,__gxx_personality_v0
   pushq %rbp
   .cfi_def_cfa_offset 16
   movq  %rsp, %rbp
   .cfi_offset 6, -16
   .cfi_def_cfa_register 6
   subq  $16, %rsp
   movl  $10, -4(%rbp)
   leaq  -4(%rbp), %rax
   movl  $11, (%rax)            # here it is 11 
   movl  $10, %esi              # but 10 is used for cout
   movl  $_ZSt4cout, %edi
   call  _ZNSolsEi
   movl  $_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_, %esi
   movq  %rax, %rdi
   call  _ZNSolsEPFRSoS_E
   movl  $0, %eax
   leave
   ret
   .cfi_endproc

To verify this claim, it had the weird idea to qualify the const int i variable as volatile (why on the earth would we need to always re-read a const value from memory?). And tata: I got then 11.

Obviously, this is highly compiler/system depends. So the bottom line is: don't do that.

Cheers, Loïc
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

IFS changing the variable value

Hi, I have a while read loop that reads files in a directory and process. The files have spaces in between, so I have the IFS=\n to to read the whole line as one file name. The read works fine but I have a problem with another variable that I set in the beginning of the script. The variable... (1 Reply)
Discussion started by: pvar
1 Replies

2. Shell Programming and Scripting

Changing a variable Question

I have a variable: $FILENAME = /XXXX/XXXX/XXXX/file.dat I want to set another variable that will give me this: $FILENAME2=filea.dat So basically i'm chopping up variable $FILENAME. Not sure cut will do this as i'm looking at different directories so the characther length may be... (2 Replies)
Discussion started by: Pablo_beezo
2 Replies

3. Programming

C++ type-casting a member variable in const methods

Is it permitted to type-cast a member variable passed in as a parameter in a member const method .. I am doing something like : in a return-type method () const { variable other = long(member variable) } this other assigned variable is not updating and I wonder if type-casting in such... (1 Reply)
Discussion started by: shriyer123
1 Replies

4. Programming

const_cast confusion

See code below. It appears that i and j inhabit the same address yet hold different values. Can anyone shed light on this? int main() { const int i= 3; int* j = const_cast<int*>(&i); *j = 5; cout << j << endl << &i << endl; cout << *j << endl << i; } (4 Replies)
Discussion started by: StuartH
4 Replies

5. Programming

C++ program is crashing on re-assigning const static member variable using an int pointer

Hi, Can any one tell me why my following program is crashing? #include <iostream> using namespace std; class CA { public: const static int i; }; const int CA::i = 10; int main() { int* pi = const_cast<int*>(&CA::i); *pi = 9; cout << CA::i << endl; } (6 Replies)
Discussion started by: royalibrahim
6 Replies

6. Shell Programming and Scripting

Changing variable name in for loop

Hi All please help if possible. I am a Unix novice. I have a similar question to the one posted by yonderboy at about a year ago. However his solution does not work for me. The pseudo code for my problem is as follows: for fund in 1 2 3 4 if (FTP is successfully) then FILE_SENT_fund... (2 Replies)
Discussion started by: Seether
2 Replies

7. Shell Programming and Scripting

Changing the variable using awk?

Dear all, I have kind of used both the awk/sed command and found them really useful. But at the necessity I am having right now, I need help. Actually, I would like to do the following in file script.sh PATH535="/eos/uscms/store/user/pooja04//analysis2012/535/mc/summer12/002/tt/" ... (2 Replies)
Discussion started by: emily
2 Replies

8. UNIX for Dummies Questions & Answers

Getting input and changing variable?

Hi I am new to scripting and have a function in my .sh script file that outputs a html radio button form weather_forecast_config() { echo "" echo "<html><head><title>Welcome</title></head>" echo "<body>" echo "<h2>Weather Forecast - Change City</h2>" echo "<form name="input"... (5 Replies)
Discussion started by: scriptnewbie
5 Replies

9. UNIX for Dummies Questions & Answers

Changing Path Variable

Blank Blank Blank (11 Replies)
Discussion started by: pvibien
11 Replies

10. Shell Programming and Scripting

Applying sed against a file from a list of values stored in a variable

Hi Forum. I have the following challenge at work that I need to write a script for. I have a file abc.txt with the following contents: 4560123456 4570987654 4580654321 I want to be able to search/replace in abc.txt - the first 4 characters anything starting with 4560 to 7777; 4570... (3 Replies)
Discussion started by: pchang
3 Replies
GUPNP_SERVICE_PROXY_ADD_NOTIFY(3)					 1					 GUPNP_SERVICE_PROXY_ADD_NOTIFY(3)

gupnp_service_proxy_add_notify - Sets up callback for variable change notification

SYNOPSIS
bool gupnp_service_proxy_add_notify (resource $proxy, string $value, int $type, mixed $callback, [mixed $arg]) DESCRIPTION
Sets up callback to be called whenever a change notification for variable is recieved. PARAMETERS
o $proxy - A service proxy identifier. o $value - The variable to add notification for. o $type - The type of the variable. Type can be one of the following values: o GUPNP_TYPE_BOOLEAN - Type of the variable is boolean. o GUPNP_TYPE_INT - Type of the variable is integer. o GUPNP_TYPE_LONG - Type of the variable is long. o GUPNP_TYPE_DOUBLE - Type of the variable is double. o GUPNP_TYPE_FLOAT - Type of the variable is float. o GUPNP_TYPE_STRING - Type of the variable is string. o $callback - The callback to call when variable changes. Typically, callback function takes on three parameters. The $variable parameter being the first, $value parameter being the second, and the $arg is third. o $arg - User data for $callback. RETURN VALUES
Returns TRUE on success or FALSE on failure. SEE ALSO
gupnp_service_proxy_remove_notify(3). PHP Documentation Group GUPNP_SERVICE_PROXY_ADD_NOTIFY(3)
All times are GMT -4. The time now is 09:39 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy